Пузырьковая сортировка, это ужасный метод сортировки, особенно если он не оптимизирован; Но он отлично подходит для введения в сортировку.
Прежде всего, что такое пузырьковая сортировка?
Пузырьковая сортировка — это алгоритм сортировки, который берет список, сравнивает элементы в списке и, если один элемент в списке больше другого, они меняются местами; этот процесс повторяется до тех пор, пока все большие значения не будут пузырьковыми вверх, а меньшие значения не опустятся вниз (иногда, возможно, просто чтобы отличаться, люди называют пузырьковую сортировку Тонущая сортировка..)
Понимая, что пузырьковая сортировка меняет значения местами, первое, что мы сделаем, — это создадим функцию обмена. эта функция принимает массив и два индекса;
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, чтобы получить приглашение.
Образованию нет конца. Дело не в том, что вы читаете книгу, сдаете экзамен и заканчиваете образование. Вся жизнь, с момента вашего рождения до момента смерти, представляет собой процесс обучения.
— Джидду Кришнамурти