当前位置:首页 > JavaScript

递归实现快速排序js

2026-01-31 01:04:21JavaScript

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

快速排序是一种分治算法,通过递归将数组分成较小的子数组进行排序。以下是JavaScript实现:

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)];
}

代码解析

递归基例处理:当数组长度小于等于1时直接返回,因为单元素数组已经是有序的。

选择基准值(pivot):这里选择数组中间位置的元素作为基准值。

分区操作:创建三个临时数组,分别存放小于、等于和大于基准值的元素。

递归调用:对左右两个子数组递归调用quickSort,并将结果与等于基准值的数组合并。

优化版本(原地排序)

function quickSort(arr, left = 0, right = arr.length - 1) {
  if (left < right) {
    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, 6, 8, 10, 1, 2, 1];
const sortedArray = quickSort(unsortedArray);
console.log(sortedArray); // [1, 1, 2, 3, 6, 8, 10]

递归实现快速排序js

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

相关文章

vue快速实现表单

vue快速实现表单

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

vue实现菜单递归

vue实现菜单递归

Vue 实现菜单递归的方法 在 Vue 中实现菜单递归通常需要组件调用自身,适用于多级嵌套的菜单结构。以下是几种常见的实现方式: 使用递归组件 递归组件是 Vue 中实现菜单递归的最直接方法。组件通…

vue 实现树状递归

vue 实现树状递归

实现树状递归的核心思路 在Vue中实现树状递归结构,通常需要结合组件递归调用和动态数据渲染。核心在于组件自身调用自身,并通过props传递层级数据。 基础递归组件实现 创建一个自调用的组件模板,通…

vue实现组件递归

vue实现组件递归

递归组件的实现方法 在Vue中实现递归组件,核心是通过组件在自身模板中调用自身。需要明确递归终止条件以避免无限循环。 定义递归组件 给组件设置name选项,便于在模板中自引用: export de…

vue组件实现递归

vue组件实现递归

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

vue组件递归实现

vue组件递归实现

Vue 组件递归实现方法 递归组件在 Vue 中常用于处理树形结构数据(如菜单、评论嵌套等),其核心是组件通过 name 选项调用自身。以下是具体实现方式: 基础递归实现 组件命名 确保组件设置了…