快速排序
tip
对于快速排序,标的的选择非常重要,标的选择的好在平均情况下快速排序的时间复杂度是O(nlogn), 在最糟糕的情况下快速排序的时间复杂度是 O(n²) 快速排序是最快的排序算法之一,也是D&C典范。
// 快速排序
function quickSort(arr) {
if (arr.length < 2) {
return arr
} else {
let sta = arr[0];
let lower = [];
let heigher = [];
for (let i = 1; i < arr.length; i++) {
if (arr[i] <= sta) {
low.push(arr[i])
} else {
heigher.push(arr[i])
}
}
return [...quickSort(lower), sta, ...quickSort(heigher)]; // 递归
}
}
// 根据数组包含的元素创建一个乘法表,即如果数组为[2, 3, 7, 8, 10],
// 首先将每个元素 都乘以2,再将每个元素都乘以3,然后将每个元素都乘以7,以此类推。
function interestMulti(arr) {
return arr.map(item => {
for (let i = 0; i<arr.length;i++) {
item *= arr[i]
}
return item;
})
}
function interestMulti2(arr) {
let tempArr = [...arr];
let result = [...arr];
while (tempArr.length > 0) {
let shifted = tempArr.shift();
result = result.map(item => item * shifted)
}
return result;
}
// 这个实现有点low~,太费空间了 😕