算法之快速排序
解决问题:
将一个无序的数组从小到大排列
算法原理:
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
钻研不易,转载请注明出处。