Пузырьковая сортировка, это ужасный метод сортировки, особенно если он не оптимизирован; Но он отлично подходит для введения в сортировку.

Прежде всего, что такое пузырьковая сортировка?

Пузырьковая сортировка — это алгоритм сортировки, который берет список, сравнивает элементы в списке и, если один элемент в списке больше другого, они меняются местами; этот процесс повторяется до тех пор, пока все большие значения не будут пузырьковыми вверх, а меньшие значения не опустятся вниз (иногда, возможно, просто чтобы отличаться, люди называют пузырьковую сортировку Тонущая сортировка..)

Понимая, что пузырьковая сортировка меняет значения местами, первое, что мы сделаем, — это создадим функцию обмена. эта функция принимает массив и два индекса;

function swap(arr, index1, index2){}

внутри функции мы поменяем местами значения index one на index2 и index2 на index1;

//ES2015
function swap(arr, index1, index2){
[arr[index1], arr[index2]] = [arr[index2],arr[index1]
}

Итак, у нас есть функция подкачки, при вызове которой будут установлены значения arr[index1] и arr[index2] со значениями друг друга, эффективно меняя их значения местами. Есть смысл?

Далее… Мы создаем нашу функцию BubbleSort, для этого нужен только один параметр, массив…

Время пузырьковой сортировки.

Просто имейте в виду, что пузырьковая сортировка не является эффективным алгоритмом сортировки, она имеет Quadratic временную сложность O(N²)(которая ужасно, из 1 — хорошо и 6 — ужасно, мы на 5; посмотрите на временную сложность Big-O, если интересно.).

Итак, вернемся к функции.

Мы собираемся быть эффективными, я не собираюсь публиковать наивный подход; Я не пытаюсь иметь этот мусор в моем чувствительном мозгу.

Алгоритм пузырьковой сортировки начинается здесь

Мы начнем с создания функции, назовем ее bubbleSort, эта функция будет принимать массив, и сразу же мы перейдем к вложенному циклу For-Loop... да, грубо.

function bubbleSort(arr){
//we are going to set out i value to the array.length so that we are
//not going over the full length of the array every iteration.
       for(let i = arr.length; i>0;i--){ 
                for(let j = 0; j<i; j++){
//if the current index is greater than the next index, we Swap //<strong/>
                   if(arr[j]> arr[j+1]){
                    swap(arr, j, j+1);
                }
      }
   }
}

Если у вас есть лучший способ сделать это, напишите ниже. Любые вопросы не стесняйтесь комментировать или связаться со мной в LinkedIn @ LinkedIn.com/adanieljohnson

Кроме того, пн-пт в 7:30 по тихоокеанскому стандартному времени я провожу прогулку по алгоритму на совещании в масштабе. Свяжитесь со мной в LinkedIn, чтобы получить приглашение.

Образованию нет конца. Дело не в том, что вы читаете книгу, сдаете экзамен и заканчиваете образование. Вся жизнь, с момента вашего рождения до момента смерти, представляет собой процесс обучения.

— Джидду Кришнамурти