JavaScript的排序算法——快速排序

快速排序(Quicksort)

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

快速排序(Quicksort)

复杂度

算法 最好情况 平均情况 最坏情况 空间复杂度 稳定性
快速排序 O(n log n) O(n log n) O(n2) O(log n) 不稳定

ES6 实现

function QuickSort(array) {
 const sort = (arr, left = 0, right = arr.length - 1) => {
  if (left >= right) {
   return array;
  }
 let i = left;
 let j = right;
 const baseVal = arr[j] ;
 while (i < j) {
  while (i < j && arr[i] <= baseVal) {
   i++;
  }
  arr[j] = arr[i] ;
  while (j > i && arr[j] >= baseVal) { 
   j--;
 }
  arr[i] = arr[j] ;
 }
 arr[j] = baseVal ;
 sort(arr, left, j-1) ;
 sort(arr, j+1, right) ;
 }
 const newArr = array.concat() ;
 sort(newArr);
 return newArr;
}

参考

相关阅读

JavaScript的排序算法——冒泡排序
JavaScript的排序算法——选择排序
JavaScript的排序算法——插入排序
JavaScript的排序算法——归并排序
JavaScript的排序算法——快速排序

推荐阅读更多精彩内容

  • 栈 1. 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被...
    IT程序员阅读 2,715评论 0 6
  • 某次二面时,面试官问起Js排序问题,吾绞尽脑汁回答了几种,深感算法有很大的问题,所以总计一下! 排序算法说明 (1...
    流浪的先知阅读 369评论 0 3
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 2,223评论 0 15
  • 前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中...
    程序猿之路阅读 1,932评论 1 27
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 89评论 0 0