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

js 快速排序

2018-03-14 23:21 351 查看
简单地说:

1. 选择一个基准数 key = arr[0]

2. 大于这个数 的放到key的右边,小于这个数的放在左边,这样数组分成了两个区间。

3. 分别在上述两个区间做第二步操作。

4. 一直重复,用递归的方式,直到区间的数为1时结束。

代码如下:

let arr=[5,9,8,7,3,45,8,10,2,6]

function qs(arr,left,right){

let key  = arr[left]

while(left<right){

while(left<right && arr[right]>=key)

right--;
arr[left] = arr[right]

while(left<right && arr[left]<=key)

left++;

arr[right] = arr[left]

arr[left] =  key

return left
}
}

function sort(arr,left,right){

if (left<right) {
let flag  = qs(arr,left,right)

sort(arr,left,flag-1)
sort(arr,flag+1,right)

}
return arr
}

let v = sort(arr,0,arr.length-1)

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