##js实现数组数字的快速排序方法##
快速排序:
基本原理是将数组内的数分成三组,取数组中间的数为基准,将较小数放在左边,较大数放在右边,分别将三类数存放在一个数组内,最后递归进行排序。
let array=[51,61,20,81,157,-27,14,3,99,-41,82,43,-8,187,137,-74,18,-32,200];
//声明一个数组;
let count2=0;//声明一个变量用于统计程序运算次数;
let midIndex=array.length/2|0;//找到中间数所在下标,向下取整;
let midValue=array[midIndex];//取出中间数;
let left=[];//接收较中间数小的数;
let right=[];//接收较中间数大的数;
let mid=[];//接收中间数;
function quickSort(){//写方法;
for(i=0;i<array.length;i++){
count++;
if(array3[i]<midValue){
left.push(array[i]);//较小数加入left数组;
}
else if(array3[i]>midValue){
right.push(array[i]);//较小数加入right数组;
}
else{
mid.push(array[i]);//中间数加入数组;
}
}
left=quickSort(left);//left数组递归再排序;
right=quickSort(right);//right数组递归再排序;
let newArray=[];//声明一个新数组用于接收排序后的数字;
return newArray.concat(left,mid,right);//连接三个数组;
}
console.log(array,count);//输出排序结果;