Encontré esta implementación de clasificación por inserción que evita usar el ciclo while típico que he visto en la mayoría de las explicaciones en video. Sin embargo, no estoy exactamente seguro de si esto es válido. ¿No sería esto casi idéntico al tipo de burbuja? ¿Realmente habría algún beneficio específico de usar esto? Aquí están mis implementaciones de clasificación por inserción y clasificación por burbuja:
let arr = [1, 4, 6, 7, 8, 6, 3, 4, 5, 6, 6, 7]; const bubbleSort = (array) => { for (let i = array.length; i > 0; i--) { for (let j = 0; j < i; j++) { if (array[j] > array[j + 1]) [array[j], array[j + 1]] = [array[j + 1], array[j]]; } } }; const insertSort = (array) => { for (let i = 1; i < array.length; i++) { for (let j = i; j > 0; j--) { if (array[j] < array[j - 1]) [array[j - 1], array[j]] = [array[j], array[j - 1]]; } } };Su implementación de clasificación por burbujas no es realmente una clasificación por burbujas; más bien, es, como notó, esencialmente lo mismo que su implementación de clasificación por inserción.
Con la ordenación de burbujas, itera a través de la lista e intercambia elementos adyacentes, cambiando los índices que se comparan cada vez, y cuando llega al final, comienza de nuevo desde el principio de la matriz y lo vuelve a hacer, y así sucesivamente, hasta que es ordenado ( Buena visualización. ) Eso no es lo que estás haciendo.
Con la ordenación por inserción, tiene una parte completamente ordenada de la matriz y una parte intacta de la matriz, tomando elementos de la parte intacta y colocándolos en la posición correcta en la parte ordenada antes de continuar con el siguiente elemento sin ordenar. ( Buena visualización). Eso es lo que estás haciendo en ambas implementaciones aquí.
¿Realmente habría algún beneficio específico de usar esto?
No. Ambos algoritmos de clasificación son muy inferiores a la clasificación por combinación (y sus variantes). Si necesita ordenar una matriz, la mejor manera sería usar la función .sort incorporada, que implementa la ordenación por combinación bajo el capó y es mucho más rápida que cualquier algoritmo de ordenación que pueda escribir por su cuenta en JavaScript.