function quickSort(arr) {
if (arr.length <= 1) {
return arr
}
let pivotIndex = Math.floor(arr.length / 2)
let pivot = arr.splice(pivotIndex, 1)[0]
let left = []
let right = []
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i])
} else {
right.push(arr[i])
}
}
return quickSort(left).concat([pivot], quickSort(right))
}
function quickSort(ary, left, right) {
if (left >= right) {
return ary;
}
let base = ary[left];
let i = left,
j = right;
let baseSort = ary[left]['sort'];
while (i < j) {
while (i < j && ary[j]['sort'] <= baseSort) {
j--;
}
while (i < j && ary[i]['sort'] >= baseSort) {
i++;
}
if (i < j) {
var temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}
ary[left] = ary[i];
ary[i] = base;
quickSort(ary, left, i - 1);
quickSort(ary, i + 1, right);
return ary;
}