AcWing 785. 快速排序 ( JavaScript 版本 )
原题链接
简单
作者:
gaobowen
,
2019-11-11 16:16:28
,
所有人可见
,
阅读 1405
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));
}
var arr =[];
function quickSort(l, r) {
if (l >= r) {
return;
}
//中间为基准
let x = arr[parseInt((l+r)/2)];
let i = l - 1;
let j = r + 1;
while (i < j) {
do { i++ } while (arr[i] < x);
do { j-- } while (arr[j] > x);
//当前区间还未划分完成
if (i < j) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
quickSort(l, j);
quickSort(j + 1, r);
}
process.stdin.on('end', function () {
buf.split('\n').forEach(function (line, lineIdx) {
if(lineIdx % 2 === 1){
arr = getInputArgs(line);
quickSort(0, arr.length - 1);
console.log(arr.join(' '));
}
});
});
js要过滤空字串啊……太坑了T-T
js要过滤空字串啊……太坑了T-T
你好,为什么这里要取中间数为pivot呢,我跟着老师的视频取第一个数作为pivot的话直接栈溢出了。。。。
JavaScript输入真的好麻烦55555