AcWing 787. 归并排序 ( JavaScript )
原题链接
简单
作者:
gaobowen
,
2019-11-12 16:17:40
,
所有人可见
,
阅读 876
let margeSort = (arr, l, r) => {
if (l >= r) return;
let mid = parseInt((l + r) / 2);
margeSort(arr, l, mid);
margeSort(arr, mid + 1, r);
let i = l;
let j = mid + 1;
let temp = new Array(r - l + 1);
let t = 0;
while (i <= mid && j <= r) {
if (arr[i] <= arr[j]) temp[t++] = arr[i++];
else temp[t++] = arr[j++];
}
while (i <= mid) temp[t++] = arr[i++];
while (j <= r) temp[t++] = arr[j++];
for (i = l, t = 0; t < temp.length; i++ , t++) {
arr[i] = temp[t];
}
}
var buf = '';
process.stdin.on('readable', function () {
var chunk = process.stdin.read();
if (chunk) buf += chunk.toString();
});
let getInputArgs = line => {
return line.split(' ').filter(s => s !== '').map(x => parseInt(x));
}
process.stdin.on('end', function () {
buf.split('\n').forEach(function (line, lineIdx) {
if (lineIdx === 1) {
let arr = getInputArgs(line);
margeSort(arr, 0, arr.length-1);
console.log(arr.join(' '))
}
});
});
为什么有了sort 函数还需要归并排序呢
主要是学习它的实现思路