-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselection-sort.js
More file actions
27 lines (25 loc) · 913 Bytes
/
selection-sort.js
File metadata and controls
27 lines (25 loc) · 913 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Buscar el mínimo elemento de la lista
// Intercambiarlo con el primero
// Buscar el siguiente mínimo en el resto de la lista
// Intercambiarlo con el segundo
const selectionSort = (xs) => {
for (let i = 0; i < xs.length; i++) {
for (let j = i + 1; j < xs.length; j++) {
console.log(xs[i], xs[j]);
if (xs[j] < xs[i]) {
const tmp = xs[i];
xs[i] = xs[j];
xs[j] = tmp;
break;
}
}
}
return xs;
};
// Para testear la igualdad de las listas en base a los elementos
const arraysEqual = (xs, ys) => JSON.stringify(xs) === JSON.stringify(ys);
console.log(arraysEqual(selectionSort([2, 3, 1]), [1, 2, 3]));
console.log(arraysEqual(selectionSort([1]), [1]));
console.log(arraysEqual(selectionSort([22, 1, 3, 1]), [1, 1, 3, 22]));
console.log(arraysEqual(selectionSort([251, 10, 1, 1]), [1, 1, 10, 251]));
console.log(arraysEqual(selectionSort([]), []));