您的位置:首页 > Web前端 > JavaScript

js实现快速排序

2018-10-03 22:53 465 查看

至于原理啥的网上太多了,就不再赘述
直接上代码和截图吧

<script type="text/javascript">
function quick_sort(arr,low,high){
var i = low; //哨兵i
var j = high; //哨兵j
var key = arr[low]; //标准值
if(low >= high){ //如果数组只有一个元素
return;
}
while(i<j){  //i==j时意味着找到k位置了
while(arr[j] > key && i < j){
//从右边向左找第一个比key小的数,找到或者两个哨兵相碰,跳出循环
j--;
}
while(arr[i] <= key && i < j){
i++;
//从左边向右找第一个比key大的数,找到或者两个哨兵相碰,跳出循环,这里的=号保证在本轮循环结束前,key的位置不变,否则的话跳出循环,交换i和from的位置的时候,from位置的上元素有可能不是key
}
/**
代码执行到这里,1、两个哨兵到找到了目标值。2、j哨兵找到了目标值。3、两个哨兵都没找到(key是当前数组最小值)
**/
if(i < j){    //如果i==j跳出外层while交换两个元素的位置
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

}
}
arr[low] = arr[i];
arr[i] = key;
quick_sort(arr,low,i-1);   //递归调用左边
quick_sort(arr,i+1,high);

}

var arr = [20,-1,5,-9,10,7,100,-100,60];
console.log(arr);
quick_sort(arr,0,arr.length-1);
console.log(arr);

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: