快速排序

138 阅读1分钟

快速排序(Quick Sort)是一种高效的排序算法,它采用了分治策略。具体来说,快速排序的实现过程如下:

  1. 选择一个基准元素(pivot),通常选择数列的第一个或者最后一个元素。
  2. 遍历数组,将小于等于基准元素的数放到基准元素的左边,大于基准元素的数放到基准元素的右边。
  3. 对基准元素左右两个子序列进行递归排序,直到序列的长度为1。

以下是JavaScript实现的快速排序:

javascript复制代码
function quickSort(arr) {
  if (arr.length <= 1) { // 如果数组的长度小于等于1,就直接返回
    return arr;
  }
  var pivot = arr[0]; // 选择第一个元素作为基准元素
  var left = [];
  var right = [];
  for (var i = 1; i < arr.length; i++) { // 遍历数组,把比pivot小的数放到left数组中,比pivot大的数放到right数组中
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(pivot, quickSort(right)); // 递归调用quickSort函数对leftright数组进行排序,然后合并结果
}

测试代码:

javascript复制代码
var arr = [64, 34, 25, 12, 22, 11, 90]; 
console.log(quickSort(arr)); 
// 输出:[11, 12, 22, 25, 34, 64, 90]

以上就是一个基本的快速排序的实现,它通过不断将数组分成两个子序列,然后对子序列进行递归排序,最终实现排序。快速排序的时间复杂度为O(nlogn),是一种高效的排序算法。