<script>
function
merge(arrk, l, m, r, arrv)
{
var
n1 = m - l + 1;
var
n2 = r - m;
var
L = Array(n1).fill(0);
var
R = Array(n2).fill(0);
var
Lk = Array(n1).fill(0);
var
Rk = Array(n2).fill(0);
for
(
var
i = 0; i < n1; ++i) {
L[i] = arrk[l + i];
Lk[i] = arrv[l + i];
}
for
(
var
j = 0; j < n2; ++j) {
R[j] = arrk[m + 1 + j];
Rk[j] = arrv[m + 1 + j];
}
var
i = 0, j = 0;
var
k = l;
while
(i < n1 && j < n2) {
if
(L[i] <= R[j]) {
arrk[k] = L[i];
arrv[k] = Lk[i];
i++;
}
else
{
arrk[k] = R[j];
arrv[k] = Rk[j];
j++;
}
k++;
}
while
(i < n1) {
arrk[k] = L[i];
arrv[k] = Lk[i];
i++;
k++;
}
while
(j < n2) {
arrk[k] = R[j];
arrv[k] = Rk[j];
j++;
k++;
}
}
function
sort(arrk, l, r, arrv)
{
if
(l < r) {
var
m = parseInt((l + r) / 2);
sort(arrk, l, m, arrv);
sort(arrk, m + 1, r, arrv);
merge(arrk, l, m, r, arrv);
}
}
function
printArray(arr)
{
var
n = arr.length;
for
(
var
i = 0; i < n; ++i)
document.write(arr[i] +
" "
);
document.write(
"<br>"
);
}
var
n = 10;
var
arrk = [ 5, 1, 4, 6, 8, 0, 6, 6, 5, 5 ]
var
arrv = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
sort(arrk, 0, n - 1, arrv);
document.write(
"Keys: "
);
printArray(arrk);
document.write(
"<br>"
);
document.write(
"Values: "
);
printArray(arrv);
</script>