js快速排序算法
阿新 • • 發佈:2018-05-27
數列 pan var 排序 flag span while quick 算法
算法:
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) returnarray // 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; }
js快速排序算法