UNPKG

area51

Version:

Experimental prototypes of alien things built in JavaScript. The bits may end up living in a different package.

77 lines (58 loc) 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = quickSort; var _arrayUtilJs = require("./array-util.js"); function partition(array, low, high) { var i = low, j = high + 1, v = array[low]; while (true) { while (array[++i] < v) { if (i === high) break; } while (v < array[--j]) { if (j === low) break; } if (i >= j) break; (0, _arrayUtilJs.swap)(array, i, j); } (0, _arrayUtilJs.swap)(array, low, j); return j; } function partitionWithCompare(array, low, high, compare) { var i = low, j = high + 1, v = array[low]; while (true) { while (compare(array[++i], v) === -1) { if (i === high) break; } while (compare(v, array[--j]) === -1) { if (j === low) break; } if (i >= j) break; (0, _arrayUtilJs.swap)(array, i, j); } (0, _arrayUtilJs.swap)(array, low, j); return j; } function performSort(array, low, high) { if (high <= low) return; var j = partition(array, low, high); performSort(array, low, j - 1); performSort(array, j + 1, high); } function performSortWithCompare(array, low, high, compare) { if (high <= low) return; var j = partitionWithCompare(array, low, high, compare); performSortWithCompare(array, low, j - 1, compare); performSortWithCompare(array, j + 1, high, compare); } function quickSort(array, compare, indexStart, length) { indexStart = indexStart || 0; length = length || array.length; if (compare) performSortWithCompare(array, indexStart, length - 1, compare);else performSort(array, indexStart, length - 1); } module.exports = exports["default"];