快速排序
【JavaScript算法】---快速排序法
一、快速排序法概念
我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边。比较完毕后再次取中间值,再次比较一次类推
二、思路
1、取的中间值,以及中间值的下标
2、创建一个left空数组,存放小于中间值的数据
3、创建一个right空数组,存放大于中间值的数据
4、递归的终止条件,如果数组的长度等于1的时候就返回数组
5、循环将数组一分为二
6、递归
三、代码
function quicksort(arr){ if(arr.length<2){ return arr; } var midIndex = arr.length%2 == 0? arr.length/2 : (arr.length+1)/2; var mid = arr[midIndex]; var left = []; var right = []; for(var i=0;i<arr.length;i++){ if(i != midIndex && arr[i] <= mid){ left.push(arr[i]); } if(i != midIndex && arr[i] > mid){ right.push(arr[i]) } } return quicksort(left).concat(mid).concat(quicksort(right)) }