C语言----随机输入10个数,从小到大依次排列

简介: C语言----随机输入10个数,从小到大依次排列
//冒泡排序
//外层循环表示排的次数
//内层循环表示每次的比较数据
#include <stdio.h>
 
int main() {
    // 初始化一个包含 10 个整数的数组
    int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
 
    // 使用冒泡排序算法对数组进行排序
    for (int i = 0; i < 9; i++)
    {  
        // 外循环,控制比较轮数,因为每次最大的数都会沉到最后,所以只需要比较 n-1 轮即可
        for (int j = 0; j < 10 - 1 - i; j++)
        {  
            // 内循环,控制每轮比较的次数,每轮比较相邻的两个数
            if (arr[j] > arr[j + 1])
            {  
                // 如果前一个数大于后一个数,就交换它们的位置,使得较大的数往后移动
                int t = arr[j];  
                // 临时变量 t 用于交换两个数的值
                arr[j] = arr[j + 1];  
                // 将后一个数赋值给前一个数
                arr[j + 1] = t;  
                // 将临时变量中存储的前一个数的值赋值给后一个数,完成交换
            }
        }
    }
    // 打印排序后的数组
    for (int i = 0; i < 10; i++)
    {
        printf("%d\t", arr[i]);  // 以制表符分隔的形式打印数组中的每个元素
    }
 
    return 0;
}
 
 
//疑点1
//为什么第一个for循环中,循环次数是9(i<9)
 
 
//模拟一下循环过程
//第一轮循环:
//在第一轮循环中,面对10个数,我们需要进行9次比较
//进行之后,最大的数9已经变到最底部了
//第二论循环中,我们就只需要进行8次比较了,因为第一轮的比较已经将最大的数字沉底
//进行之后,现在最大的数字8也就到了底部
//在这个例子中,我们可以看到在每一轮的循环中,最后一个元素都会背确定为当前轮次的最大值
//因此我们可以在下一轮循环时少进行一次比较
//所以我们循环的表达式设置为i<9
 
 
 
//疑点2
//为什么内层循环,循环的上限是 10-1-i
//10是数组的长度,i是外层循环的当前轮次
//具体来说,假设我们有一个长度为10的数组,当前外层循环的轮次是0
//在第一轮循环结束的时候,数组的最后一个元素已经是最大的了,因此不用参加比较
//所以内层循环的上限就是 10-1-0
//当外层循环进行到第二轮的时候,i=1;
//在第二轮循环结束后,数组的倒数第二大的元素已经是次大,因此不需要再次参加比较
//此时内层循环的上限就是 10-1-1
//类推,随着外层循环的进行,每一轮内层循环的上限都会逐渐减小


相关文章
|
1月前
|
搜索推荐 算法 C语言
冒泡排序:从小到大轻松搞定数组排序(c语言代码)
冒泡排序:从小到大轻松搞定数组排序(c语言代码)
149 0
|
8天前
|
C语言
C语言-----输入10个数,对其从大到小进行排列
C语言-----输入10个数,对其从大到小进行排列
|
11月前
|
C语言
C语言:输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
描述 输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。 输入描述: 输入包含三行, 第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。 第二行包含n个整数,用空格分隔。 第三行包含m个整数,用空格分隔。
213 0
C语言:输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
|
算法 C语言 C++
【C语言蓝桥杯每日一题】——排列字母
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】——排列字母~ 都是精华内容,可不要错过哟!!!😍😍😍
124 0
|
C语言
C语言 - 从大到小排列三个数
C语言 - 从大到小排列三个数
137 0
|
C语言
C语言_数字排列顺序
1 #include 2 #include 3 #define LENGTH 8 4 5 void main() { 6 int i, j, tmp, number[LENGTH] = { 95, 45, 15, 78, 84, 51, 24, 12 }; ...
626 0
|
14小时前
|
Java C语言 C++
定义C语言的int main()函数
定义C语言的int main()函数
|
4天前
|
C语言
C语言prinf函数
C语言prinf函数
10 4
|
2天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数