为什么在我的例子中快速排序总是比冒泡排序慢?
Why quick sort is always slower than bubble sort in my case?
他们使用相同的数组:
QUICK SORT时间:3159毫秒(数组长度10K)
Bubble SORT时间:1373毫秒(数组长度10K)
我正在尝试比较使用快速排序算法和冒泡排序算法的排序时间。对于这两个函数,我使用具有 10K 个不同随机数的数组,这些随机数按随机顺序排序。但出于某种原因,冒泡排序总是比快速排序更快地对数组进行排序,即使冒泡排序的平均时间复杂度比快速排序的平均时间复杂度差。为什么在我的例子中冒泡排序算法比快速排序算法慢? (我尝试了不同长度的数组,从 10 到 10K)
这就是我的快速排序功能
let quickSort = (arr) => {
if (arr.length <= 1) {
return arr
}
const pivot = arr[0]
const rest = arr.slice(1);
let left = [],
right = [];
rest.forEach(el => el > pivot ? right = [...right, el] : left = [...left, el]);
return [...quickSort(left), pivot, ...quickSort(right)];
}
这就是我的冒泡排序函数
let bubbleSort = (arr) => {
for (let i = 0; i < arr.length; i++) {
for (let s = i + 1; s < arr.length; s++) {
if (arr[s] < arr[i]) {
let a = arr[i];
arr[i] = arr[s]
arr[s] = a;
}
}
}
return arr
}
正如@Barmar所说,Quicksort正在复制很多。
此外,每个 展开运算符(3 点运算符)的复杂度为 O(n),因为它遍历整个数组(就像一个简单的 for 循环)这也可能使算法变慢。
他们使用相同的数组:
QUICK SORT时间:3159毫秒(数组长度10K)
Bubble SORT时间:1373毫秒(数组长度10K)
我正在尝试比较使用快速排序算法和冒泡排序算法的排序时间。对于这两个函数,我使用具有 10K 个不同随机数的数组,这些随机数按随机顺序排序。但出于某种原因,冒泡排序总是比快速排序更快地对数组进行排序,即使冒泡排序的平均时间复杂度比快速排序的平均时间复杂度差。为什么在我的例子中冒泡排序算法比快速排序算法慢? (我尝试了不同长度的数组,从 10 到 10K)
这就是我的快速排序功能
let quickSort = (arr) => {
if (arr.length <= 1) {
return arr
}
const pivot = arr[0]
const rest = arr.slice(1);
let left = [],
right = [];
rest.forEach(el => el > pivot ? right = [...right, el] : left = [...left, el]);
return [...quickSort(left), pivot, ...quickSort(right)];
}
这就是我的冒泡排序函数
let bubbleSort = (arr) => {
for (let i = 0; i < arr.length; i++) {
for (let s = i + 1; s < arr.length; s++) {
if (arr[s] < arr[i]) {
let a = arr[i];
arr[i] = arr[s]
arr[s] = a;
}
}
}
return arr
}
正如@Barmar所说,Quicksort正在复制很多。
此外,每个 展开运算符(3 点运算符)的复杂度为 O(n),因为它遍历整个数组(就像一个简单的 for 循环)这也可能使算法变慢。