c语言循环结构排序,C语言循环结构 -C语言冒泡排序算法(附带源码)

本文介绍了冒泡排序算法的工作原理,通过一个示例展示了如何使用C语言实现从大到小排序10个随机生成的100内的正整数。冒泡排序通过嵌套循环进行比较和交换操作,逐步调整数列顺序。最后,文章给出了排序后的数列结果。
摘要由CSDN通过智能技术生成

排序(sorting)就是调整列表的顺序,是计算机编程中经常要做的一件事情。经过排序以后的数据,可以极大地提高查找的效率。

冒泡排序(bubble sort)是用嵌套的 for 循环来实现的,其名称来源于这种排序方法的特性。在排序过程中,每一轮循环都使得较小或较大的值“浮”到列表的最上端。图 1 演示了用冒泡排序法对 5 个数进行排序的过程。

2ac25d2774051bf6c21ef739a46c7992.gif

图 1:冒泡排序(从大到小)

随机生成 10 个 100 内的正整数,按从大到小的顺序输出。

问题分析

10 个正整数用 1+rand( )%99 随机生成。

整个排序过程用嵌套的 for 循环来完成。外层循环的循环次数为 9 次,设置排序位置,使得从第一个位置开始的每一个数都与其后面的所有数依次比较大小(内层循环);内层循环负责数的比较,并把不符合顺序的数字进行对换,其循环次数就是排序位置后面的数字的个数。

定义数组 nums[10] 存储 10 个数。如果外层循环设置处在排序位置 i 的元素是 nums[i],则其后的元素 nums[i+1]、nums[i+2]、…、nums[9] 都要与 nums[i] 在内层循环中进行比较,并把不符合顺序的数字进行对换。因而,内层循环的循环变量范围可以设置为 i+1~9。

算法描述

1) 定义外层循环控制变量 outer 和内层循环控制变量 inner;

2) 定义用于交换数值的临时变量 temp;

3) 定义数组 nums[10] 用于存储 10 个数;

4) 循环变量 i(0~9)控制循环为数组 nums 的元素赋值:获得一个 100 内的随机整数并赋值给数组元素 nums[i];输出数组元素 nums[i];

5) 循环变量 outer(0~8)控制外层循环,设置排序位置 outer:

循环变量 inner(outer+1~9) 控制内层循环:

如果 nums[inner] 的值大于排序位置的 nums[outer] 的值,则交换 nums[inner] 和 nums[outer] 的值:

① temp = nums[outer];

② nums[outer] = nums[inner];

③ nums[inner] = temp;

6) 循环变量 i(0~9)控制输出排序后的数组 nums 的所有元素:输出数组元素 nums[i];

7) 结束。

C语言代码清单 1:随机生成 10 个 100 内的正整数,按从大到小的顺序输出

#include

#include

int main( )

{

system("color 70"); //设置显示屏前景色7和背景色0

int i,inner,outer,temp;

int nums[10];

printf("排序前:");

for(i=0;i<10;i++) //随机生成10个数并输出

{

nums[i]=1+rand()%99;

printf("%d ",nums[i]);

}

for(outer=0;outer<9;outer++) //外层循环

for(inner=outer+1;inner<10;inner++) //内层循环

{

if(nums[inner]>nums[outer]) //比较大小

{

temp=nums[outer];

nums[outer]=nums[inner];

nums[inner]=temp;

} //互换

}

printf("\n排序后:");

for(i=0;i<10;i++) //输出排序后的数列

printf("%d ",nums[i]);

printf("\n");

system("pause");

return 0;

}

运行结果为:

排序前:42 54 98 68 63 83 94 55 35 12

排序后:98 94 83 68 63 55 54 42 35 12

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值