算法之快速排序
解决问题:
将一个无序的数组从小到大排列
算法原理:
1.先在数组中选择一个基数
2.将除基数外的数组分为两个数组,比基数小的分为一个数组,比基数大的分为一个数组
3.将分好的两个数组重复1,2两步,递归得到排好顺序的数组
代码:
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([23,11,89,45,67,76,56,99]))
注释:
Math.floor() //向下取整
arr.splice(pivotIndex, 1) //从数组第pivotIndex个数开始,取1个数返回
concat() //连接两个或多个数组
参考:https://www.cnblogs.com/dearxinli/p/8881406.html
钻研不易,转载请注明出处。