我们知道数据结构中有9种多排序法:
一般用到的有:
冒泡排序法(前面已经讲过)
快速排序法
思路:
1.找中间值
2.遍历数组,小于中间项的放在左边,大于中间项的放在右边。
3.递归
代码如下:
function quickSort(arr){
if(arr.length<=1){ //注意这里 不能写成双等
return arr;
}
//获取数组的中间索引值
var middleIndex = Math.floor(arr.length/2);
//获取数组的中间数
var middleNum = arr.splice(middleIndex,1);
//console.log(middleNum);
var left = [];
var right = [];
for(var i in arr){ //for in遍历数组 i代表下标 arr[i] 代表数组每一项
if(arr[i]<=middleNum){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
//console.log("left",left);
//console.log("right",right);
//这是我第一次的写法,这个写法是错误的,没有遵从数组方法的运用。
//return quickSort(left) + middleNum + quickSort(right);
//递归
return quickSort(left).concat(middleNum,quickSort(right))
}
var array = [3,6,4,8,1];
quickSort(array);