UNPKG

@aureooms/js-odd-even-mergesort

Version:

Batcher's odd-even mergesort algorithm for JavaScript

107 lines (84 loc) 4.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = merge; var _marked = [merge].map(regeneratorRuntime.mark); /** * Merges * [ i , i + r , i + 2 * r , ... , x [ * with * [ j , j + r , j + 2 * r , ... , k [ * (2 sorted sequences). */ function merge(i, x, j, k, r) { var step, m, n; return regeneratorRuntime.wrap(function merge$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: step = r * 2; m = x - i; n = k - j; if (!(m <= 0 || n <= 0)) { _context.next = 7; break; } return _context.abrupt("return"); case 7: if (!(m <= r && n <= r)) { _context.next = 12; break; } _context.next = 10; return [i, j]; case 10: _context.next = 32; break; case 12: return _context.delegateYield(merge(i, x, j, k, step), "t0", 13); case 13: return _context.delegateYield(merge(i + r, x, j + r, k, step), "t1", 14); case 14: i += r, x -= r; case 15: if (!(i < x)) { _context.next = 21; break; } _context.next = 18; return [i, i + r]; case 18: i += step; _context.next = 15; break; case 21: if (!(i < x + r)) { _context.next = 25; break; } _context.next = 24; return [i, j]; case 24: j += r; case 25: k -= r; case 26: if (!(j < k)) { _context.next = 32; break; } _context.next = 29; return [j, j + r]; case 29: j += step; _context.next = 26; break; case 32: case "end": return _context.stop(); } } }, _marked[0], this); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXJnZS5qcyJdLCJuYW1lcyI6WyJtZXJnZSIsImkiLCJ4IiwiaiIsImsiLCJyIiwic3RlcCIsIm0iLCJuIl0sIm1hcHBpbmdzIjoiOzs7OztRQVNpQkEsSyxHQUFBQSxLOztlQUFBQSxLOztBQVJqQjs7Ozs7Ozs7QUFRTyxTQUFVQSxLQUFWLENBQWtCQyxDQUFsQixFQUFzQkMsQ0FBdEIsRUFBMEJDLENBQTFCLEVBQThCQyxDQUE5QixFQUFrQ0MsQ0FBbEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUFDLFNBRkEsR0FFT0QsSUFBSSxDQUZYO0FBSUFFLE1BSkEsR0FJSUwsSUFBSUQsQ0FKUjtBQUtBTyxNQUxBLEdBS0lKLElBQUlELENBTFI7O0FBQUEsV0FPREksS0FBSyxDQUFMLElBQVVDLEtBQUssQ0FQZDtBQUFBO0FBQUE7QUFBQTs7QUFBQTs7QUFBQTtBQUFBLFdBU0lELEtBQUtGLENBQUwsSUFBVUcsS0FBS0gsQ0FUbkI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxZQVM2QixDQUFFSixDQUFGLEVBQU1FLENBQU4sQ0FUN0I7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsbUNBYVFILE1BQVNDLENBQVQsRUFBZUMsQ0FBZixFQUFxQkMsQ0FBckIsRUFBMkJDLENBQTNCLEVBQStCRSxJQUEvQixDQWJSOztBQUFBO0FBQUEsbUNBY1FOLE1BQU9DLElBQUlJLENBQVgsRUFBZUgsQ0FBZixFQUFtQkMsSUFBSUUsQ0FBdkIsRUFBMkJELENBQTNCLEVBQStCRSxJQUEvQixDQWRSOztBQUFBO0FBZ0JDTCxVQUFLSSxDQUFMLEVBQVNILEtBQUtHLENBaEJmOztBQUFBO0FBQUEsV0FnQm1CSixJQUFJQyxDQWhCdkI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxZQWdCNkMsQ0FBRUQsQ0FBRixFQUFNQSxJQUFJSSxDQUFWLENBaEI3Qzs7QUFBQTtBQWdCMkJKLFVBQUtLLElBaEJoQztBQUFBO0FBQUE7O0FBQUE7QUFBQSxXQWtCQUwsSUFBSUMsSUFBSUcsQ0FsQlI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxZQTRCRSxDQUFFSixDQUFGLEVBQU1FLENBQU4sQ0E1QkY7O0FBQUE7QUE2QkpBLFVBQUtFLENBQUw7O0FBN0JJO0FBaUNDRCxVQUFLQyxDQWpDTjs7QUFBQTtBQUFBLFdBaUNVRixJQUFJQyxDQWpDZDtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLFlBaUNvQyxDQUFFRCxDQUFGLEVBQU1BLElBQUlFLENBQVYsQ0FqQ3BDOztBQUFBO0FBaUNrQkYsVUFBS0csSUFqQ3ZCO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsImZpbGUiOiJtZXJnZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBNZXJnZXNcbiAqICAgWyBpICwgaSArIHIgLCBpICsgMiAqIHIgLCAuLi4gLCB4IFtcbiAqIHdpdGhcbiAqICAgWyBqICwgaiArIHIgLCBqICsgMiAqIHIgLCAuLi4gLCBrIFtcbiAqICgyIHNvcnRlZCBzZXF1ZW5jZXMpLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiogbWVyZ2UgKCBpICwgeCAsIGogLCBrICwgciApIHtcblxuXHRjb25zdCBzdGVwID0gciAqIDIgO1xuXG5cdGNvbnN0IG0gPSB4IC0gaSA7XG5cdGNvbnN0IG4gPSBrIC0gaiA7XG5cblx0aWYgKCBtIDw9IDAgfHwgbiA8PSAwICkgcmV0dXJuIDtcblxuXHRlbHNlIGlmICggbSA8PSByICYmIG4gPD0gciApIHlpZWxkIFsgaSAsIGogXSA7XG5cblx0ZWxzZSB7XG5cbiAgICAgICAgeWllbGQqIG1lcmdlKCAgIGkgICAsIHggLCAgIGogICAsIGsgLCBzdGVwICkgO1xuICAgICAgICB5aWVsZCogbWVyZ2UoIGkgKyByICwgeCAsIGogKyByICwgayAsIHN0ZXAgKSA7XG5cblx0XHRmb3IgKCBpICs9IHIgLCB4IC09IHIgOyBpIDwgeCA7IGkgKz0gc3RlcCApIHlpZWxkIFsgaSAsIGkgKyByIF0gO1xuXG5cdFx0aWYgKCBpIDwgeCArIHIgKSB7XG5cblx0XHRcdC8vIGhhbmRsZXMgdGhlIGNhc2Ugd2hlbiB3ZSB3YW50IHRvIG1lcmdlXG5cdFx0XHQvLyBpICAgICAgICAgICAgICB4ICAgICAgIGogICAgICAgIGtcblx0XHRcdC8vIEUgTyBFIC4uLiBPIEUgTyAgd2l0aCAgRSBPIEUgLi4uXG5cdFx0XHQvLyAgIHxffCAgICAgfF98IHxfX19fX19fX3wgfF98XG5cdFx0XHQvLyAgICAgICAgICAgICAgICAgICBeXlxuXHRcdFx0Ly8gICAgICAgICAgICAgICAgICAgfHxcblx0XHRcdC8vICAgICAgICAgICAgdGhpcyBjb21wYXJpc29uXG5cblx0XHRcdHlpZWxkIFsgaSAsIGogXSA7XG5cdFx0XHRqICs9IHIgO1xuXG5cdFx0fVxuXG5cdFx0Zm9yICggayAtPSByIDsgaiA8IGsgOyBqICs9IHN0ZXAgKSB5aWVsZCBbIGogLCBqICsgciBdIDtcblxuXHR9XG5cbn1cblxuIl19