mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2026-03-13 15:21:15 +08:00
merge: Bubble Sort enhancements for nearly sorted or sorted array, added test cases and documentation (#895)
* BubbleSort enacements for nearly sorted or sorted array and added test cases * BubbleSort enacements for nearly sorted or sorted array and added test cases * Bubble sort requested changes solved * standard js style issue fixed
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
* compares adjacent element and swaps their position
|
||||
* The big O on bubble sort in worst and best case is O(N^2).
|
||||
* Not efficient.
|
||||
* Somehow if the array is sorted or nearly sorted then we can optimize bubble sort by adding a flag.
|
||||
*
|
||||
* In bubble sort, we keep iterating while something was swapped in
|
||||
* the previous inner-loop iteration. By swapped I mean, in the
|
||||
@@ -17,16 +18,23 @@
|
||||
*/
|
||||
export function bubbleSort (items) {
|
||||
const length = items.length
|
||||
let noSwaps
|
||||
|
||||
for (let i = (length - 1); i > 0; i--) {
|
||||
for (let i = length; i > 0; i--) {
|
||||
// flag for optimization
|
||||
noSwaps = true
|
||||
// Number of passes
|
||||
for (let j = (length - i); j > 0; j--) {
|
||||
for (let j = 0; j < (i - 1); j++) {
|
||||
// Compare the adjacent positions
|
||||
if (items[j] < items[j - 1]) {
|
||||
if (items[j] > items[j + 1]) {
|
||||
// Swap the numbers
|
||||
[items[j], items[j - 1]] = [items[j - 1], items[j]]
|
||||
[items[j], items[j + 1]] = [items[j + 1], items[j]]
|
||||
noSwaps = false
|
||||
}
|
||||
}
|
||||
if (noSwaps) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return items
|
||||
|
||||
Reference in New Issue
Block a user