JavaScript实现快速排序
Posted 遥岑.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript实现快速排序相关的知识,希望对你有一定的参考价值。
目录
快速排序
快速排序:快速排序几乎可以说是目前所有排序算法中最快的一种,可以看作是冒泡排序的升级版,它的思想是分而治之。
当然,没有任何一种算法是在任意情况下都是最优的,比如希尔排序在某些情况下可能优于快速排序,但是大多数情况下,快速排序还是比较好的选择
基本思想:
- 在数据集中,选择一个元素作为基准(pivot)
- 所有小于基准的元素,都移到基准的左边;所有大于基准的元素,都移到基准的右边
- 对基准左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止
枢纽(基准)的选择:快速排序中有一个很重要的步骤是选取枢纽,①是直接选取第一个元素作为枢纽,但是在某些情况下,效率不是特别高;②是使用随机数,但是随机数本身就是一个消耗性能的操作;③是取头中尾的中位数,比如8、12、3的中位数是8;④取中间的数。
图例:
图例实现:
var arr = [6,21,5,9,10,2,16]
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));
;
console.log(quickSort(arr))
输出结果:
以上是关于JavaScript实现快速排序的主要内容,如果未能解决你的问题,请参考以下文章