Selection Sort
¿Qué es Selection Sort?
Selection Sort es un algoritmo de ordenamiento que divide el arreglo en dos partes: una parte ordenada que se construye gradualmente y otra no ordenada. En cada iteración, encuentra el elemento más pequeño de la parte no ordenada y lo coloca al inicio de la parte ordenada.
El Código
function selectionSort(arr) {
for (let i = 0; i < arr.length; i++) {
let min = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
if (i !== min) {
let temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
// Ejemplo de uso
const array = [64, 34, 25, 12, 22, 11, 90];
console.log("Array ordenado:", selectionSort(array)); // [11, 12, 22, 25, 34, 64, 90]
Ver en repositorio: GitHub
Puntos Clave del Algoritmo
- Entrada: Un arreglo desordenado (
arr
). - Salida: El arreglo ordenado de menor a mayor.
-
Método:
- Selecciona el elemento más pequeño de la parte no ordenada del arreglo.
- Intercambia el elemento seleccionado con el primero de la parte no ordenada.
- Repite el proceso para el resto del arreglo.
- Complejidad:
- Peor caso: O(n²), ya que recorre el arreglo completo para cada elemento.
- Mejor caso: O(n²), incluso si el arreglo ya está ordenado.
- Ventajas: Es fácil de implementar y no requiere espacio adicional.
- Desventajas: Es ineficiente para arreglos grandes en comparación con otros algoritmos como Merge Sort o Quick Sort.
Ejemplo de Ejecución
Arreglo inicial: [64, 34, 25, 12, 22, 11, 90]
Proceso de ordenamiento:
- Encuentra el elemento más pequeño
11
e intercambia con el primer elemento. Resultado:[11, 34, 25, 12, 22, 64, 90]
- Encuentra el siguiente más pequeño
12
e intercambia con el segundo elemento. Resultado:[11, 12, 25, 34, 22, 64, 90]
- Encuentra el siguiente más pequeño
22
e intercambia con el tercer elemento. Resultado:[11, 12, 22, 34, 25, 64, 90]
- Encuentra el siguiente más pequeño
25
e intercambia con el cuarto elemento. Resultado:[11, 12, 22, 25, 34, 64, 90]
- Ya no hay más intercambios necesarios. Resultado final:
[11, 12, 22, 25, 34, 64, 90]
Arreglo final ordenado: [11, 12, 22, 25, 34, 64, 90]
Información Adicional
Aunque el algoritmo Selection Sort es fácil de entender y adecuado para datos pequeños, no es eficiente para grandes volúmenes de datos debido a su complejidad de tiempo cuadrática. Es ideal para aplicaciones donde la simplicidad es más importante que la velocidad.