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


全部评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务