题解 | #输入n个整数,输出其中最小的k个#
输入n个整数,输出其中最小的k个
https://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c
排序题不建议使用内置的sort方法,还是多手写排序吧,巩固一下排序算法。
这里贡献一个快排的写法
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
function main(n, arg) {
let left = 0;
let right = arg.length - 1;
quick_sort(arg, left, right);
const res = [];
while (n > 0) {
res.push(arg.shift());
n--;
}
console.log(res.join(" "));
}
function quick_sort(arg, left, right) {
if (left < right) {
const mid = partition(arg, left, right);
quick_sort(arg, left, mid - 1);
quick_sort(arg, mid + 1, right);
}
}
function partition(arg, left, right) {
let i = left;
let pivot = right;
for (let j = left; j < right; j++) {
if (arg[j] < arg[pivot]) {
[arg[i], arg[j]] = [arg[j], arg[i]];
i++;
}
}
[arg[i], arg[pivot]] = [arg[pivot], arg[i]];
return i;
}
const arr = [];
rl.on("line", function (line) {
arr.push(line.split(" "));
});
rl.on("close", function () {
const newArr = arr[1].map((item) => +item);
main(Number(arr[0][1]), newArr);
});