Алгоритм пузырьковой сортировки с использованием JavaScript
Алгоритм пузырьковой сортировки - это алгоритм, который сортирует массив путем сравнения двух соседних элементов и меняет их местами, если они не в намеченном порядке. Здесь порядок может быть любым, например, в порядке возрастания или убывания.
Как работает пузырьковая сортировка
У нас есть несортированный массив arr = [1, 4, 2, 5, -2, 3], задача - отсортировать массив с помощью пузырьковой сортировки.
Сортировка пузырьков сравнивает элемент из индекса 0, и если 0-й индекс меньше 1-го индекса, тогда значения меняются местами, и если 0-й индекс меньше 1-го индекса, то ничего не происходит.
затем 1-й индекс сравнивается со 2-м индексом, затем 2-й индекс сравнивается с 3-м и т. д.
давайте посмотрим на это на примере, здесь кратко проиллюстрирован каждый шаг
После каждой итерации наибольшее значение массива становится последним индексом массива. на каждой итерации сравнение происходит до последнего несортированного элемента.
After all the iteration and comparisons of elements, we get a sorted array.
Syntax
BubbleSort(array){ for i -> 0 to arrayLength for j -> 0 to (arrayLength - i - 1) if arr[j] > arr[j + 1] swap(arr[j], arr[j + 1]) }
Implementation
Javascript
// Bubble sort Implementation using Javascript // Creating the bblSort function function bblSort(arr){ for ( var i = 0; i < arr.length; i++){ // Last i elements are already in place for ( var j = 0; j < ( arr.length - i -1 ); j++){ // Checking if the item at present iteration // is greater than the next iteration if (arr[j] > arr[j+1]){ // If the condition is true then swap them var temp = arr[j] arr[j] = arr[j + 1] arr[j+1] = temp } } } // Print the sorted array console.log(arr); } // This is our unsorted array var arr = [234, 43, 55, 63, 5, 6, 235, 547]; // Now pass this array to the bblSort() function bblSort(arr); |
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]
Примечание: эта реализация не оптимизирована. Далее мы увидим оптимизированное решение.
Оптимизированное решение
As we discussed the implementation of bubble sort earlier that is not optimized. Even If the array is sorted, the code will run with O(n^2) complexity. Let’s see how to implement an optimized bubble sort algorithm in javascript.
The syntax for Optimized solution
BubbleSort(array){ for i -> 0 to arrayLength isSwapped <- false for j -> 0 to (arrayLength - i - 1) if arr[j] > arr[j + 1] swap(arr[j], arr[j + 1]) isSwapped -> true }
Implementation
Javascript
// Optimized implementation of bubble sort Algorithm function bubbleSort(arr){ var i, j; var len = arr.length; var isSwapped = false ; for (i =0; i < len; i++){ isSwapped = false ; for (j = 0; j < len; j++){ if (arr[j] > arr[j + 1]){ var temp = arr[j] arr[j] = arr[j+1]; arr[j+1] = temp; isSwapped = true ; } } // IF no two elements were swapped by inner loop, then break if (!isSwapped){ break ; } } // Print the array console.log(arr) } var arr = [243, 45, 23, 356, 3, 5346, 35, 5]; // calling the bubbleSort Function bubbleSort(arr) |
Output Sorted Array : [3, 5, 23, 35, 45, 243, 356, 5346]
Complexities
Worst Case and Average case time complexity
Если массив находится в обратном порядке, то это наихудший случай, и его временная сложность составляет O (n 2 ).
Лучшая временная сложность случая
Если массив уже отсортирован, это лучший сценарий и его временная сложность O (n).
Вспомогательное пространство : O (1)