Как сделать сортировку массива методом пузырька в js?
Ответы
Andrey G
08 декабря 2022
На каждом шаге мы находим наибольший элемент из двух соседних и ставим этот элемент в конец пары. Получается, что при каждом прогоне цикла большие элементы будут всплывать к концу массива, как пузырьки воздуха — отсюда и название.
Алгоритм выглядит так:
- Берём самый первый элемент массива и сравниваем его со вторым. Если первый больше второго — меняем их местами с первым, если нет — ничего не делаем.
- Затем берём второй элемент массива и сравниваем его со следующим — третьим. Если второй больше третьего — меняем их местами, если нет — ничего не делаем.
- Проходим так до предпоследнего элемента, сравниваем его с последним и ставим наибольший из них в конец массива. Всё, мы нашли самое большое число в массиве и поставили его на своё место.
- Возвращаемся в начало алгоритма и делаем всё снова точно так же, начиная с первого и второго элемента. Только теперь даём себе задание не проверять последний элемент — мы знаем, что теперь в конце массива самый большой элемент.
- Когда закончим очередной проход — уменьшаем значение финальной позиции, до которой проверяем, и снова начинаем сначала.
- Так делаем до тех пор, пока у нас не останется один элемент.
const array = [4, 2, 10, 9, 12, 7];
const bubbleSort1 = (numbers) => {
for (let i = numbers.length - 1; i > 0; i -= 1) {
for (let j = 0; j < i; j += 1) {
const leftNum = numbers[j];
const rightNum = numbers[j + 1];
if (leftNum > rightNum) {
numbers[j + 1] = leftNum;
numbers[j] = rightNum;
}
}
}
return numbers;
};
// => [ 2, 4, 7, 9, 10, 12 ]
0
0