Another update from ingydotnet^djgoku

This commit is contained in:
Ingy döt Net 2015-11-18 06:14:39 +00:00
parent 91df62d461
commit 948b86eafa
7604 changed files with 108452 additions and 22726 deletions

View file

@ -1,21 +1,31 @@
function merge(left, right, arr) {
var a = 0;
while (left.length && right.length)
arr[a++] = right[0] < left[0] ? right.shift() : left.shift();
while (left.length) arr[a++] = left.shift();
while (right.length) arr[a++] = right.shift();
var a = 0;
while (left.length && right.length) {
arr[a++] = (right[0] < left[0]) ? right.shift() : left.shift();
}
while (left.length) {
arr[a++] = left.shift();
}
while (right.length) {
arr[a++] = right.shift();
}
}
function mSort(arr, tmp, len) {
if (len == 1) return;
var m = Math.floor(len / 2),
tmp_l = tmp.slice(0, m),
tmp_r = tmp.slice(m);
mSort(tmp_l, arr.slice(0, m), m);
mSort(tmp_r, arr.slice(m), len - m);
merge(tmp_l, tmp_r, arr);
if (len === 1) { return; }
var m = Math.floor(len / 2),
tmp_l = tmp.slice(0, m),
tmp_r = tmp.slice(m);
mSort(tmp_l, arr.slice(0, m), m);
mSort(tmp_r, arr.slice(m), len - m);
merge(tmp_l, tmp_r, arr);
}
function merge_sort(arr) {
mSort(arr, arr.slice(), arr.length);
mSort(arr, arr.slice(), arr.length);
}
var arr = [1, 5, 2, 7, 3, 9, 4, 6, 8];