Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说JS快速排序_js数组排序的几种方法,希望能够帮助你!!!。
//4.快速排序
//先排一趟
//先用parition函数排出比支点(指定最后一个为指点)小的放左边,比支点大的放在支点的右边
function partition(arr, l, r) {
let j = l;
let key = arr[r]
for (let i = l; i < r; i++) {
if (arr[i] < key) {
let tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
j++;
}
}
let temp = arr[j];
arr[j] = arr[r];
arr[r] = temp;
console.log(j);
return j;
}
//用fastSort函数调用上面的函数,得到支点此时的位置,再对支点左右两边分别递归
function fastSort(arr, low, high) {
if(high<2){
return arr;
}
if (low < high) {
let m = partition(arr, low, high);
fastSort(arr, low, m - 1);
fastSort(arr, m, high);
}
return arr;
}
console.log(fastSort(arr, 0, arr.length - 1));
第二种
//快排第二种
function fastSort1(arr) {
if (arr.length < 2) {
return arr;
}
let left = [];
let right = [];
//支点
let privot = Math.floor(arr.length / 2);
// console.log(privot, 'ppp');
let p = arr.splice(privot, 1)[0];
// console.log(arr);
// console.log(p, 'iii');
for (let i = 0; i < arr.length; i++) {
if (arr[i] < p) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return fastSort1(left).concat([p], fastSort1(right));
}
console.log(fastSort1(arr));
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章