๐บ๐ธ Bubble sort
is the most basic sorting algorithm. It works by starting at the first element of an array and comparing it to the second element; if the first element is greater than the second element, it swaps the two. It then compares the second to the third, and the third to the fourth, and so on; in this way, the largest values "bubble" to the end of the array. Once it gets to the end of the array, it starts over and repeats the process until the array is sorted numerically.
Implement a function that takes an array and sorts it using this technique. Don't use JavaScript's built-in sorting function (Array.prototype.sort
).
Advance
: Optimization time! During any given pass, if no elements are swapped we can assume the list is sorted and can exit the function early. After this optimization, what is the time complexity of your algorithm? (Big-O
)๐ฆ๐ทEl Ordenamiento de Burbuja
es el algoritmo de alineaciรณn mรกs bรกsico de todos. Empieza desde el primer elemento de la lista y comparando el segundo elemento, y si el primer elemento es mayor que el segundo elemento, intercambia los dos elementos. A continuaciรณn, se compara el segundo elemento con el tercer elemento, el tercero con el cuarto, asi continuamente el mayor elemento queda al final de la lista. Una vez que se haya completado la lista, se repita el proceso hasta que la lista se ordene numericamente.
Implementa una funciรณn que reciba una lista (array
) y la ordene utilizando esta tecnica. No utilices la funcion ordenadora de Javascript (Array.prototype.sort
).
Avanzado
: Tiempo de optimizaciรณn! En cualquier paso dado, si no se intercambian elementos, podemos asumir que la lista estรก ordenada y la funciรณn puede terminar antes. ยฟCuรกl es la complejidad de tiempo del algoritmo despuรฉs de esta optimizaciรณn? (Big-O
)๐ฐ๐ท ๋ฒ๋ธ ์ ๋ ฌ
์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์์ ์์ํ์ฌ ๋ ๋ฒ์งธ ์์์ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ฉฐ, ์ฒซ ๋ฒ์งธ ์์๊ฐ ๋ ๋ฒ์งธ ์์๋ณด๋ค ํฌ๋ฉด ๋ ์์๋ฅผ ๊ตํํ๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ๋ฒ์งธ ๊ฐ์ ์ธ ๋ฒ์งธ ๊ฐ๊ณผ ๋น๊ตํ๊ณ , ์ธ ๋ฒ์งธ ๊ฐ๊ณผ ๋ค ๋ฒ์งธ ๊ฐ ๋ฑ์ ๋ฐฐ์ด ๋์ "๋ฒ๋ธ"ํ๋ ๋ฐฉ์์ผ๋ก ๋น๊ตํ๋ค. ์ผ๋จ ๋ฐฐ์ด์ด ๋๋๋ฉด, ๋ฐฐ์ด์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋๊น์ง ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
๋ฐฐ์ด(Array
)๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ์ด ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ ๋ ฌํ๋ ํจ์๋ฅผ ๊ตฌํํ์ญ์์ค. JavaScript์ ๋ด์ฅ๋ ์ ๋ ฌ ํจ์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค (Array.prototype.sort
).
Advance
: ์ต์ ํ ์๊ฐ! ์ ๋ ฌ ๊ณผ์ ๋์, ๋ง์ฝ ์ด๋ค ์์๋ ๊ตํ๋์ง ์๋๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํ ์ ์๊ณ , ๊ทธ ๊ธฐ๋ฅ์ ์ผ์ฐ ์ข
๋ฃํ ์ ์๋ค. ์ด ์ต์ ํ ํ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ ์ด๋ค๊ฐ์? (Big-O
)Example:
// Test
bubbleSort([2, 1, 3]); // output> [1, 2, 3]
bubbleSort([2, 72, 11, 10, 4]); // output> [2, 4, 10, 11, 72]
bubbleSort([21, 22, 23.5, 23.3, -25]); // output> [-25, 22, 23.3, 23.5, 25]
// etc...
let bubbleSort = function(array) {
// Your CODE
};
// Test
bubbleSort([2, 1, 3]); // output> [1, 2, 3]
bubbleSort([2, 72, 11, 10, 4]); // output> [2, 4, 10, 11, 72]
bubbleSort([21, 22, 23.5, 23.3, -25]); // output> [-25, 22, 23.3, 23.5, 25]
Solution ๐
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
let bubbleSort = function(array) {
// Your CODE
let count = 0;
while (count !== array.length) {
for (let i = 0; i < array.length - 1 - count; i++) {
let item1 = array[i];
let item2 = array[i + 1];
if (item1 > item2) {
array[i] = item2;
array[i + 1] = item1;
}
}
count++;
}
return array;
};
forEach()
)let bubbleSort = function(array) {
// Your CODE
let count = 0;
while (count !== array.length) {
array.forEach(function(currentValue, index) {
let nextValue = array[index + 1];
if (currentValue > array[index + 1]) {
array[index + 1] = currentValue;
array[index] = nextValue;
}
});
count++;
}
return array;
};