描述
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
实现
const arr = [ 8, 3, 9, 6, 80, 0, 2, 5, 90, 1, 99, 8, 8, 7 ];const quickSort = (start, size) => {let i = start;let j = size - 1;if (j < 0 || i >= j) {return false;}const key = arr[i];while (i < j) {for (j; j > i; j--) {if (arr[j] < key) {arr[i] = arr[j];arr[j] = key;i++;break;}}for (i; i < j; i++) {if (arr[i] > key) {arr[j] = arr[i];arr[i] = key;j--;break;}}}quickSort(start, i);quickSort(i + 1, size);return arr;};const result = quickSort(0, arr.length);console.info(result); //
时间复杂度: O(nlogn)
