快排 quicksort 快速排序

时间:2023-03-08 15:48:40
快排 quicksort 快速排序

首先看这个

http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html

看完后就没有什么不理解的了...

PS

注意 凡是在一趟比较中l 或者 r的值改变了
都需要检测一下 l 是否还是 满足 l < r

function quick(arr, start, end) {
if (start < end) {
var l = start;
var r = end;
var tmp = arr[l];
while (l < r) {
while (l < r && arr[r] > tmp) r--;
if (l < r) {
arr[l] = arr[r];
l++; //l这个坑已经填好了 那么下次从左边数应该从这个坑后面的位置开始 //所以是l++ 而不是 r--
}
console.log('r' + arr);
while (l < r && arr[l] < tmp) l++;
if (l < r) {
arr[r] = arr[l];
r--;
}
console.log('l' + arr);
}
arr[l] = tmp;
console.log(arr);
quick(arr, start, l - 1);
quick(arr, l + 1, end);
}
} arr = [23,12,54,67,34,88];
quick(arr,0 ,arr.length-1);
console.log();