Usan la misma matriz:
CLASIFICACIÓN RÁPIDA Tiempo: 3159 milisegundos (longitud de matriz 10K)
Bubble SORT Tiempo: 1373 milisegundos (longitud de matriz 10K)
Estoy tratando de comparar el tiempo de clasificación usando algoritmos de clasificación rápida y de burbujas. Uso la matriz con 10K números aleatorios diferentes ordenados aleatoriamente para ambas funciones. Pero, por alguna razón, la clasificación de burbujas siempre es una matriz de clasificación más rápida que la clasificación rápida, incluso si la complejidad de tiempo promedio de la clasificación de burbujas es peor que la complejidad de tiempo promedio de la clasificación rápida. ¿Por qué los algoritmos de clasificación de burbujas son más lentos que los algoritmos de clasificación rápida en mi caso? (Probé diferentes longitudes de matriz, de 10 a 10K)
Esa es mi función de clasificación rápida
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)]; }Y esa es mi función de clasificación de burbujas
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 }Tal como dijo @Barmar, Quicksort está haciendo muchas copias.
Además, cada operador de propagación (el operador de 3 puntos) tiene una complejidad de O(n) a medida que itera a través de toda la matriz (como un bucle for simple), lo que también puede hacer que el algoritmo sea más lento.