Search code examples
javascriptsortingbubble-sort

JavaScript bubble sort modification (Looping `i` stops before the sorting ends.)


It's my first question. I study the bubble sort implementation in JS.

It seems that code not working correctly. Help me please fix it

pen link

var arr = [11, 12, 0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 13];
var n = arr.length;
var t;
var swap = true;

for (var i = 0; (i < n) && (swap === true); i++) {
  for (var j = 0; j < (n - (i + 1)); j++) {
    if (arr[j] > arr[j + 1]) {
      t = arr[j + 1];
      arr[j + 1] = arr[j];
      arr[j] = t;
      swap = true;
    } else {
      swap = false;
    }
  }
};

Solution

  • var swap = true;
    for (var i = 0; (i < n) && (swap === true); ++i) {
        swap = false;
        for (var j = 0; j < ( n - (i + 1) ); ++j) {
            if ( arr[j] > arr[j + 1] ) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
    
                swap = true;
            }
        } 
    }
    

    Once loopi didn't swap any number, "swap" will be false, then we can exit the loop.