当前位置:首页 > JavaScript

递归实现快速排序js

2026-03-01 16:08:46JavaScript

递归实现快速排序js

递归实现快速排序的JavaScript代码

快速排序是一种高效的排序算法,采用分治策略。以下是递归实现的JavaScript代码:

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

  const pivot = arr[0];
  const left = [];
  const right = [];

  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }

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

代码说明

  • 基线条件:当数组长度小于等于1时直接返回,无需排序
  • 选择基准值(pivot):通常选择第一个元素作为基准
  • 分区操作:将小于基准的元素放入left数组,大于等于基准的元素放入right数组
  • 递归调用:对left和right数组分别递归调用quickSort,并将结果与基准值合并

优化版本(原地排序)

上述实现需要额外空间。以下是原地排序的优化版本:

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

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

  return arr;
}

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²) - 当数组已经有序或逆序时
  • 平均情况:O(n log n)

使用示例

const unsortedArray = [3, 7, 2, 9, 1, 6, 8, 5, 4];
const sortedArray = quickSort(unsortedArray);
console.log(sortedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

递归实现快速排序js

标签: 递归快速
分享给朋友:

相关文章

vue快速实现表单

vue快速实现表单

Vue 快速实现表单 使用 v-model 实现双向绑定 在 Vue 中,可以通过 v-model 指令快速实现表单元素的双向数据绑定。例如,输入框、复选框、单选按钮和下拉菜单都可以通过 v-mode…

php递归实现阶乘

php递归实现阶乘

递归实现阶乘的原理 阶乘的定义是对于一个非负整数 n,其阶乘是所有小于及等于 n 的正整数的积。递归是一种通过函数调用自身来解决问题的方法。递归实现阶乘的核心思想是将问题分解为更小的子问题,直到达到基…

js实现递归

js实现递归

递归的基本概念 递归是一种通过函数调用自身来解决问题的方法。在JavaScript中,递归通常用于处理具有重复子问题或分治结构的数据,例如树形结构、阶乘计算等。 递归的实现要点 基线条件(Bas…

vue实现递归目录

vue实现递归目录

实现递归目录的基本思路 在Vue中实现递归目录通常涉及使用递归组件,即组件在其模板中调用自身。这种方式适合展示树形结构数据,如文件目录、菜单等。 递归组件实现步骤 创建递归组件需要定义一个有名称的组…

vue组件实现递归

vue组件实现递归

Vue 组件实现递归的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论嵌套等)。以下是几种常见实现方式: 使用组件名称直接递归 通过组件自身的 name 属性实现递归调用:…

vue实现递归查找

vue实现递归查找

Vue 实现递归查找的方法 在 Vue 中实现递归查找通常用于处理树形结构数据或嵌套组件。以下是几种常见的实现方式: 使用递归组件 Vue 组件可以调用自身实现递归: <templa…