1.思想
(1)从一组数中选出一个基准值(可以是任意的数字)。
(2)从左往右依次寻找比该基准值大的数,从右往左找第一个比基准值小的数,将两者进行对调。
(3)直从左往右的数值下标大于等于从右往左的数值下标,一次循环停止。
(4)采用递归的方法处理左边的数据,递归的处理右边的数据,直到循环结束。
2.代码实现
function quickSort(arr, left = 0, right = arr.length - 1) { if (left >= right) return; var mid = arr[parseInt((left + right) / 2)], //枢纽选择的是中间的 l = left, r = right; while (true) { while (arr[l] < mid) { l++; } while (arr[r] > mid) { r--; } if (l >= r) { break; } [arr[l], arr[r]] = [arr[r], arr[l]]; } quickSort(arr, left, l - 1); quickSort(arr, l + 1, right); return arr; }
浙公网安备 33010602011771号