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

JS实现快速排序(2种方法)

2017-06-29 20:49 681 查看
1、用i和j两个指针



2、用一个指针判断,大的放在右边,小的数放在左边

<!DOCTYPE html>
<html>
<head>
<title>quickSort</title>
<meta charset="utf-8"/>
<script type="text/javascript">
var arr=[12,20,5,16,15,1,30,45,23,9];
var start = 0;
var end = arr.length;
console.log('arr:' +arr);
function quickSort(arr,low,high){
var key=arr[low];
var start=low;
var end=high;
while(end>start){
while(end>start&&arr[end]>=key) end--;
if(arr[end]<=key){
var temp = arr[end];
arr[end]=arr[start];
arr[start] = temp;
}
while(end>start&&arr[start]<=key) start++;
if(arr[start]>=key){
var temp = arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
if(start>low) quickSort(arr,low,start-1);
if(end<high) quickSort(arr,end+1,high);
}
quickSort(arr,start,end);
console.log('After arr:' +arr);
</script>

<script type="text/javascript">
function sort(elements){
if(elements.length<=1){
return elements;
}
var piIndex = Math.floor(elements.length/2);//取数组中间值
console.log(piIndex);
var pi = elements.splice(piIndex,1)[0];//???在中间值的地方插入元素
var left = [];
var right = [];
for(var i =0;i<elements.length;i++){
if(elements[i]<pi){
left.push(elements[i]);
} else {
right.push(elements[i]);
}
}
return sort(left).concat([pi],sort(right));
}
var elements=[12,20,5,16,15,1,30,45,23,9];
document.write(sort(elements));
</script>
</head>
<body>

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