他們使用相同的陣列:
快速排序時間:3159 毫秒(陣列長度 10K)
冒泡排序時間: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
}
uj5u.com熱心網友回復:
正如@Barmar 所說,Quicksort 正在制作大量副本。
此外,每個擴展運算子(3 點運算子)的復雜度為 O(n),因為它遍歷整個陣列(如簡單的for回圈),這也可能會使演算法變慢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379264.html
標籤:javascript 数组 算法 排序 数组算法
