快排 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();