当前位置:首页 > 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)

递归实现快速排序js

使用示例

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

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

相关文章

vue实现递归函数

vue实现递归函数

Vue 中实现递归函数的方法 在 Vue 中实现递归函数通常用于处理树形结构数据、嵌套组件或递归算法。以下是几种常见实现方式: 递归组件实现 Vue 允许组件在其模板中调用自身,通过 name 选项…

vue实现递归目录

vue实现递归目录

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

vue组件实现递归

vue组件实现递归

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

vue v -for实现递归

vue v -for实现递归

Vue 中使用 v-for 实现递归 在 Vue 中,可以通过组件递归调用的方式结合 v-for 实现递归渲染树形结构或嵌套数据。 递归组件的基本实现 定义一个组件,并在组件内部调用自身,配合 v-…

react如何快速生成教授叫

react如何快速生成教授叫

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

react实现递归

react实现递归

React 实现递归的方法 在 React 中实现递归通常用于渲染嵌套数据结构(如树形菜单、评论回复等)。以下是几种常见的实现方式: 递归组件 通过组件调用自身实现递归渲染: function T…