1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| /*数组交换*/ function swap(A, i, j) { const t = A[i]; A[i] = A[j]; A[j] = t; }
/** * * @param {*} A 数组 * @param {*} p 起始下标 * @param {*} r 结束下标 + 1 */ function divide(A, p, r) { const x = A[r - 1]; let i = p - 1;
for (let j = p; j < r - 1; j++) { if (A[j] <= x) { i++; swap(A, i, j); } }
swap(A, i + 1, r - 1);
return i + 1; }
/** * * @param {*} A 数组 * @param {*} p 起始下标 * @param {*} r 结束下标 + 1 */ function qsort(A, p = 0, r) { r = r || A.length;
if (p < r - 1) { const q = divide(A, p, r); qsort(A, p, q); qsort(A, q + 1, r); }
return A; }
console.log(qsort(arr1, p=0, arr1.length))
|