Array.prototype.quickSort = function() { var len = this.length; if(len < 2) return this; var left = [], right = [], base = this[0]; for(var i = 1; i < len; i ++) { var iv = this[i]; iv >= base && right.push(iv); iv < base && le…
快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路: 在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放到这个数的左边,依次递归调用直到比较队列中只有两个数. 代码实现: var arrs = [23,85,61,37,55,12,63,11,99,39,70,21,23]; function QuickSort(arr , s,e){ var len = e; var token = arr[s];…
终于到了传说中的快速排序算法了,快速排序的思想和归并排序一样,都是采用分治思想,不同之处在于归并每次将数组一分为二,最后将小的数组进行比较,合并为大数组.快排是每次找一个主元,也就是基准数,按照这个基准数,把小于基准数的数放左边,大于基准数的数放右边,通过基准数来分组实现排序.所以快排的很重要一步就是选择主元,主元选取的是否合适直接影响到算法的效率.我的方法是每次从子数组中三个数(首.尾.中),取他们的中位数作为主元,分析到此结束,直接上code function quickSort(arr,l…