sorting/bubblesort.js

  1. (function (exports) {
  2. 'use strict';
  3. function comparator(a, b) {
  4. return a - b;
  5. }
  6. /**
  7. * Bubble sort algorithm.<br><br>
  8. * Complexity: O(N^2).
  9. *
  10. * @example
  11. * var sort = require('path-to-algorithms/src/' +
  12. * 'sorting/bubblesort').bubbleSort;
  13. * console.log(sort([2, 5, 1, 0, 4])); // [ 0, 1, 2, 4, 5 ]
  14. *
  15. * @public
  16. * @module sorting/bubblesort
  17. * @param {Array} array Input array.
  18. * @param {Function} cmp Optional. A function that defines an
  19. * alternative sort order. The function should return a negative,
  20. * zero, or positive value, depending on the arguments.
  21. * @return {Array} Sorted array.
  22. */
  23. function bubbleSort(array, cmp) {
  24. cmp = cmp || comparator;
  25. var temp;
  26. for (var i = 0; i < array.length; i += 1) {
  27. for (var j = i; j > 0; j -= 1) {
  28. if (cmp(array[j], array[j - 1]) < 0) {
  29. temp = array[j];
  30. array[j] = array[j - 1];
  31. array[j - 1] = temp;
  32. }
  33. }
  34. }
  35. return array;
  36. }
  37. exports.bubbleSort = bubbleSort;
  38. })(typeof window === 'undefined' ? module.exports : window);