题解 | #输入n个整数,输出其中最小的k个#

输入n个整数,输出其中最小的k个

https://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c

解题思路 :
这道题唯一的难点是从小到大输出 需要对输入的数组进行排序
这里用递归实现一个冒泡排序的方法
flag的建立是为了减少运算次数
(如果遍历后有发生过数据交换,证明前面n-1位的数据不是顺序排列的;反之则为顺序排列,不需要再递归下去)   
#include <stdio.h>
void px(int* arr, int n) {
    int flag = 1;
    for (int i = 0; i < n - 1; i++) {
        int temp;
        if (arr[i] > arr[i + 1]) {
            flag = 0;
            temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }
    if (flag == 0) {
        if (n > 1) {
            px(arr, n - 1);
        }
    }
}
int main() {
    int n, k;
    int arr[1000];
    scanf("%d %d", &n, &k);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    px(arr, n);
    for (int i = 0; i < k; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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