题解 | #输入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); });