JavaScript 快速排序算法实现详解

作者:小括号时间:2026-10-30 13:20:51浏览:445

本文详细介绍 JavaScript 中快速排序(Quicksort)的实现原理与代码。通过选择基准值、分区操作及递归调用,将数组分为小于和大于基准的两部分,逐步完成排序。文章提供了从基础逻辑到完整代码的逐步解析,帮助开发者理解并应用该经典排序算法。

快速排序算法原理

快速排序的核心思想非常直观,整个排序过程主要包含三个关键步骤:

首先,在数据集中选取一个元素作为"基准"(pivot)。

其次,遍历所有元素,将小于"基准"的元素移至其左侧,大于"基准"的元素移至其右侧。

最后,对基准左侧和右侧的两个子集重复上述过程,直到子集中仅包含一个元素,此时排序完成。

以数据集 {85, 24, 63, 45, 17, 31, 96, 50} 为例,具体排序过程如下:

第一步,选取中间元素 45 作为"基准"(基准值可任意选择,选中间值有助于理解)。

快速排序算法原理

第二步,依次将每个元素与"基准"比较,构建两个子集:一个包含"小于 45"的元素,另一个包含"大于等于 45"的元素。

快速排序算法原理

第三步,对这两个子集重复第一步和第二步的操作,直至所有子集仅剩一个元素。

快速排序算法原理

快速排序算法原理

快速排序算法原理

快速排序算法原理

JavaScript 代码实现

参考相关资料,下面使用 JavaScript 语言实现上述算法逻辑。

首先定义一个名为 quickSort 的函数,接收一个数组作为参数。


var quickSort = function(arr) {
};

接着检查数组元素数量,若小于或等于 1,则直接返回原数组。


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

随后选择"基准"(pivot),将其从原数组中分离,并定义两个空数组用于存放左右两个子集。


var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2) ;
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
};

遍历原数组,将小于"基准"的元素放入左侧子集,大于基准的元素放入右侧子集。


var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2) ;
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
};

最后,通过递归不断重复上述过程,最终得到排序后的数组。


var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

使用时,直接调用 quickSort() 函数即可。

快速排序算法原理

以上介绍了 JavaScript 快速排序算法的实例详解,希望对大家有帮助。如有疑问请留言,小编会及时回复。感谢支持!

作者最新文章