C语言简单练习题——No.14 , 关于冒泡排序的详细解答,和多次输入如何不创建多个变量来完成

C语言简单练习题——No.14 , 关于冒泡排序的详细解答,和多次输入如何不创建多个变量来完成,第1张

C语言简单练习题——No.14 , 关于冒泡排序的详细解答,和多次输入如何不创建多个变量来完成

题目链接:

争夺前五名_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14?tpId=107&tags=&title=&difficulty=0&judgeStatus=0&rp=0

知识点:

1. 多次输入使用数组与循环相结合的方式去完成多次输入,从而避免了取定义,初始化多个相关的变量

2. 冒泡排序:

其思想是俩俩相邻的元素进行比较,并且有可能的话,需要进行交换

若待排序的元素有 n 个,则需要进行 n - 1 趟冒泡排序

而且每经过一趟冒泡排序则就需要俩俩元素之间相互比较

即一趟冒泡排序需要进行多少对元素的比较

要想实现,则需要俩个 for 循环

排序的最终结果要么是升序要么是降序

而升序是从小到大的排列的意思,降序则是从大到小排列的意思

假设有 num 个元素

    int num = 0,i= 0;
    scanf("%dn",&num);
    int arr[50] = {0};

for (i = 0;i < num;i++)
    {
        scanf("%d ",&arr[i]);
    }

for (i = 0;i < num-1;i++)
    {
        int j = 0;
        for (j = 0;j < num - 1 - i;j++)
        {
            if (arr[j] < arr[j + 1])
            {
                int change = 0;
                change = arr[j];
                arr[j] = arr[j + 1];
                arr[j+1] = change;
            }
        }
    }

代码解释:

num - 1 表示冒泡排序的趟数

num - 1 - i 表示一趟冒泡排序需要进行多少对元素的比较,而 - i 是因为每经过一趟排序的比较,一个数的位置就已经确定好了,所以不需要再次去比较这个数

根据题意要求,当排序的元素个数大于5个时,只需要取已经排列好顺序的前五个元素。若要实现这个功能,则:

 if (num == 5)    //分情况讨论,当 num = 5 时,当 num 大于 5 时
    {
        for (i = 0;i < num-1;i++)
    {
        int j = 0;
        for (j = 0;j < num - 1 - i;j++)
        {
            if (arr[j] < arr[j + 1])
            {
                int change = 0;
                change = arr[j];
                arr[j] = arr[j + 1];
                arr[j+1] = change;
            }
        }
    }
    for (i = 0;i 

附加练习:

最高分数_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/52c18a3b49a54fc98107fbdde1415f90?tpId=107&tags=&title=&difficulty=0&judgeStatus=0&rp=0

正确题解:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5713764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存