栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

正确题解:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717443.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号