当前位置:首页 > JavaScript

用JS实现快速排序算法

2026-01-31 06:30:29JavaScript

快速排序的原理

快速排序是一种分治算法,通过选择一个基准元素(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),插入排序可能比快速排序更高效。
  • 基准选择策略会影响性能,常见方法包括选择第一个元素、最后一个元素、中间元素或随机元素。
  • 快速排序是不稳定的排序算法,相等元素的相对位置可能会改变。

用JS实现快速排序算法

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

相关文章

vue快速实现表单

vue快速实现表单

Vue 快速实现表单的方法 使用 Vue 快速实现表单可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 双向绑定 Vue 提供了 v-model 指令,可以快速实现表单数据的双向…

vue怎么实现快速开发

vue怎么实现快速开发

Vue 快速开发的实现方法 使用 Vue CLI 或 Vite 快速搭建项目 Vue CLI 是官方提供的脚手架工具,能一键生成项目结构。通过命令 vue create project-name 快速…

react如何快速搭建项目

react如何快速搭建项目

使用 Create React App 搭建项目 Create React App (CRA) 是官方推荐的快速搭建 React 项目的工具。无需配置 Webpack 或 Babel,开箱即用。 安…

如何快速新建react项目

如何快速新建react项目

使用 Create React App 工具 安装 Create React App(CRA)是官方推荐的方式,适合大多数 React 项目初始化。 确保已安装 Node.js(版本 14 或…

react如何实现快速输入数据

react如何实现快速输入数据

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

如何快速构建react组件库

如何快速构建react组件库

快速构建 React 组件库的方法 使用脚手架工具初始化项目 推荐使用 create-react-app 或 Vite 快速初始化项目。以 Vite 为例: npm create vite@lat…