用 JavaScript 实现快速排序代码如下:
/*
* @author liphong
* @data 2019/02/24
*/ var arr = []; // 需要被排序数组 /*
* 分离函数:实现参考数组中左边部分比参考值小,右边部分比参考值大
* @param left, right {Number, Number} 数组头、尾的下标值
* @return left {Number} 数组参考值最后的位置下标值
*/
function partition(left, right) {
const initValue = arr[left];
while (left < right) {
while (arr[right] >= initValue && left < right) {
right --;
}
arr[left] = arr[right];
while (arr[left] <= arr[right] && left < right) {
left ++;
}
arr[right] = arr[left];
}
arr[left] = initValue;
return left;
}
/*
* 函数:通过递归自身,实现从小到大排序
* @param left, right {Number, Number} 数组头、尾的下标值
*/
function quickSort(left, right) {
if (left >= right) {
return
}
let mid = partition(left, right);
quickSort(left, mid - 1);
quickSort(mid + 1, right);
} quickSort(0, arr.length - 1); // 快排