算法:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
动画演示:
function quickSort(array) { function sort(start, end) { var low = start; var hight = end - 1; var flag = array[start]; if((end-start)<=1) return array // low和hight重合时完成一次排序 while (low < hight) { //从右往左找,直到找到一个小于基准的数时放入low所在的位置,然后跳出 while (hight>low) { if (array[hight] < flag) { array[low] = array[hight]; low++;//左侧前进一步 break; }; hight-- } //从左往右找,直到找到一个大于基准的数,放入hight所在的位置,然后跳出 while(low < hight) { if (array[low] > flag) { array[hight] = array[low]; hight -- //右侧前进一步 break; } low++ } } array[low] = flag; sort(0, low); sort(low + 1, end); } sort(0, array.length); return array; }
原文:https://www.cnblogs.com/94pm/p/9094599.html