Search code examples
javascriptbubble-sort

JavaScript BubbleSort, how to improve its efficiency?


Have a bubblesort routine similar to this. I need to make it more efficient by stopping the loop when the array is sorted or if the array is already sorted.

function sortNumbers(listbox) {
  var x, y, holder;
  // The Bubble Sort method.
  for(x = 0; x < ranarray.length; x++) {
    for(y = 0; y < (ranarray.length-1); y++) {
      if(ranarray[y] > ranarray[y+1]) {
        holder = ranarray[y+1];
        ranarray[y+1] = ranarray[y];
        ranarray[y] = holder;
      }
    }
  }

Solution

  • Before enter the inner loop, create a boolean to check if a swap occured inside the inner loop. When the there is no swap the array is sorted.

    function sortNumbers(listbox) { 
      var x, y, holder; 
      // The Bubble Sort method. 
      for(x = 0; x < ranarray.length; x++) { 
        var swapOccured = false;
        for(y = 0; y < (ranarray.length-1); y++) { 
          if(ranarray[y] > ranarray[y+1]) { 
            holder = ranarray[y+1]; 
            ranarray[y+1] = ranarray[y]; 
            ranarray[y] = holder; 
            swapOccured = true;
          } 
        }
        if (!swapOccured) break; 
      }