Estaba practicando hace un tiempo y me encontré con el tipo de selección . Después de investigar algunas fuentes diferentes, hay algunos que declaran una matriz y luego eliminan la ubicación mínima actual, mientras que otros intercambian dentro de la matriz.
Traté de usar ES6 para algunas funciones triviales, no usé el mapa porque quería entender el bucle en una pizarra.
¿Se considera esto un tipo de selección?
selectionSortNoSwap = list)= => { const result = []; for (let i = 0; i < list; i++) { const min = Math.min(...list); const minIndex = list.indexOf(min); result.push(min); list.splice(minIndex, 1); } return result; }; selectionSortNoSwap([3, 5, 2, 1, 4]);Gracias
No. La ordenación por selección verdadera ordena en el lugar , en lugar de crear otra matriz. Es decir, dado:
[3, 5, 2, 1, 4]después de la primera iteración, una ordenación por selección debe producir la siguiente estructura de datos en la memoria:
[1, 5, 2, 3, 4]donde el 1 y el 3 han sido intercambiados - y no
[3, 5, 2, 4] [1]Si los elementos no se intercambian entre sí, no es una ordenación por selección.
Para ordenar en el lugar, necesitarías algo como
const selectionSort = (list) => { for (let i = 0; i < list.length; i++) { // for convenience - or use a for loop const min = Math.min(...list.slice(i)); const minIndex = list.indexOf(min, i); [list[i], list[minIndex]] = [list[minIndex], list[i]]; } return list; }; console.log(selectionSort([3, 5, 2, 1, 4]));