快速排序
function quickSort(list) {
if (list.length == 0 || list.length == 1) {
return list;
}
//定位枢纽
let index = Math.floor(list.length / 2);
//取出枢纽 返回值为数组
let currentItem = list.splice(index, 1);
//定义枢纽左边的数组 盛放小于等于枢纽的值
let leftList = [];
//定义枢纽右边的数组,盛放大于枢纽的值
let rightList = [];
//遍历比较
list.forEach(item => {
if (item <= currentItem) {
leftList.push(item)
} else {
rightList.push(item)
}
});
//合并三个数组 作为参数 形成递归函数
return quickSort(leftList).concat(currentItem).concat(quickSort(rightList))
}
let arr = [226, 12, 22, 51, 3, 5, 9, 199, 511];
console.log(quickSort(arr));
快速排序的平均效率为:O(N*logN)