JavaScript之手写快速排序
一.易理解
var arr = [1, 2, 3, 4, 5, 6, 7];
function quickSort(arr) {
if (arr.length <= 1) return arr;
var arrIndex = Math.floor(arr.length / 2);
var arrNum = arr.splice(arrIndex, 1)[0];
var left = [], right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < arrNum) { left.push(arr[i]); }
else { right.push(arr[i]); }
}
return quickSort(left).concat([arrNum], quickSort(right));
}
var val = quickSort(arr)
console.log(val);
二.
function quickSort(arr, left, right) {
if (left >= right) return;
let standard = arr[left];
let i = left, j = right;
while (i != j) {
while (i < j && arr[j] >= standard) {
j--;
}
while (i < j && arr[i] <= standard) {
i++;
}
if (i < j) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
let temp1 = arr[i];
arr[i] = arr[left];
arr[left] = temp1;
quickSort(arr, 0, i - 1);
quickSort(arr, i + 1, right)
}
var a = [9, 5, 11, 4, 1, 7, 6];
quickSort(a, 0, a.length - 1)
console.log(a)
今天是面试挂掉的第一天,愈挫愈奋,再接再厉。
与诸君共勉!