insertionSort.js 528 B

1234567891011121314151617181920
  1. var swap = require('./swap');
  2. var isSorted = require('./isSorted');
  3. exports = function(arr) {
  4. var cmp =
  5. arguments.length > 1 && arguments[1] !== undefined
  6. ? arguments[1]
  7. : isSorted.defComparator;
  8. for (var i = 1, len = arr.length; i < len; i++) {
  9. for (var j = i; j > 0; j--) {
  10. if (cmp(arr[j], arr[j - 1]) < 0) {
  11. swap(arr, j, j - 1);
  12. } else {
  13. break;
  14. }
  15. }
  16. }
  17. return arr;
  18. };
  19. module.exports = exports;