当前位置:首页 > JavaScript

用JS实现快速排序算法

2026-01-31 06:30:29JavaScript

用JS实现快速排序算法

用JS实现快速排序算法

快速排序的原理

快速排序是一种分治算法,通过选择一个基准元素(pivot)将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归地对这两部分进行排序。

代码实现

function quickSort(arr) {
  if (arr.length <= 1) return arr;

  const pivot = arr[Math.floor(arr.length / 2)];
  const left = [];
  const right = [];
  const equal = [];

  for (let element of arr) {
    if (element < pivot) left.push(element);
    else if (element > pivot) right.push(element);
    else equal.push(element);
  }

  return [...quickSort(left), ...equal, ...quickSort(right)];
}

使用示例

const unsortedArray = [3, 6, 8, 10, 1, 2, 1];
const sortedArray = quickSort(unsortedArray);
console.log(sortedArray); // 输出: [1, 1, 2, 3, 6, 8, 10]

优化版本(原地排序)

function quickSortInPlace(arr, left = 0, right = arr.length - 1) {
  if (left >= right) return;

  const pivotIndex = partition(arr, left, right);
  quickSortInPlace(arr, left, pivotIndex - 1);
  quickSortInPlace(arr, pivotIndex + 1, right);
}

function partition(arr, left, right) {
  const pivot = arr[right];
  let i = left;

  for (let j = left; j < right; j++) {
    if (arr[j] < pivot) {
      [arr[i], arr[j]] = [arr[j], arr[i]];
      i++;
    }
  }

  [arr[i], arr[right]] = [arr[right], arr[i]];
  return i;
}

时间复杂度分析

  • 最佳情况:O(n log n)
  • 平均情况:O(n log n)
  • 最坏情况:O(n²)(当数组已经排序或逆序时)

注意事项

  • 对于小型数组(如长度小于10),插入排序可能比快速排序更高效。
  • 基准选择策略会影响性能,常见方法包括选择第一个元素、最后一个元素、中间元素或随机元素。
  • 快速排序是不稳定的排序算法,相等元素的相对位置可能会改变。

标签: 算法快速
分享给朋友:

相关文章

react如何实现快速输入数据

react如何实现快速输入数据

实现快速输入数据的方法 在React中实现快速输入数据可以通过优化表单处理、使用状态管理库或第三方组件库来提高效率。以下是几种常见方法: 使用受控组件优化表单 受控组件是React推荐的表单处理方式…

react如何快速生成教授叫

react如何快速生成教授叫

在React中快速生成教授叫可以通过多种方法实现,包括使用状态管理、组件封装或第三方库。以下是具体实现方式: 使用useState管理教授叫状态 在函数组件中,通过useState定义教授叫的状态,…

php 实现算法

php 实现算法

PHP 实现常见算法的方法 PHP 作为一门服务器端脚本语言,可以实现多种算法。以下是一些常见算法的 PHP 实现示例。 排序算法 冒泡排序 function bubbleSort($array)…

php实现欧几里得算法实现

php实现欧几里得算法实现

欧几里得算法简介 欧几里得算法(辗转相除法)用于计算两个非负整数的最大公约数(GCD)。其核心思想是通过反复用较小数除较大数取余,直到余数为0,此时的除数即为最大公约数。 PHP实现方法 以下是用P…

蚁群算法js实现

蚁群算法js实现

蚁群算法简介 蚁群算法(Ant Colony Optimization, ACO)是一种模拟蚂蚁觅食行为的启发式算法,常用于解决组合优化问题(如旅行商问题TSP)。蚂蚁通过信息素(pheromone)…