ZiMingの宝藏之地
首页项目归档笔记照片墙音乐灵境说说杂谈友链关于
知识库
138 篇文档 / 65 个目录
目录菜单
主页知识库
飞书飞书知识库/前端/面试/JS/js 基础/手写快速排序

手写快速排序

同步时间:2026-05-26T15:20:18
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)];
}

// 示例
const array = [7, 2, 1, 6, 8, 5, 3, 4];
console.log(quickSort(array)); // 输出: [1, 2, 3, 4, 5, 6, 7, 8]
function quickSort(arr: number[], startIndex = 0): number[] {
  if (arr.length <= 1) return arr;
  const left: number[] = [],
    right: number[] = [],
    startNum = arr.splice(startIndex, 1)[0];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < startNum) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return [...quickSort(left), startNum, ...quickSort(right)];
}
javascript

let arr = [1, 2, 3, 4, 5];
let removedElement = arr.splice(1, 1)[0]; // arr 变为 [1, 3, 4, 5],removedElement 为 2

在这个例子中,splice(1, 1) 从索引 1 的位置删除了一个元素(即数字 2),然后 [0] 获取了这个被删除的元素。所以,removedElement 的值是 2。