c语言sscanf函数的用法是什么
256
2022-09-17
小朋友学C语言(26):冒泡排序
(一)基本原理(由小到大):
将相邻两个数比较,将大的调到后头。如果有n个数,则要进行n-1趟比较。
在第1趟中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。
上图中有5个数,要进行5 - 1 = 4趟比较。 第1趟,要进行n - 1 = 4次两两比较; 第2趟,要进行5 - 2 = 3次两两比较; 第3趟,要进行5 - 3 = 2次两两比较; 第4趟,要进行5 - 4 = 1次两两比较。
(二)代码实现
1 C语言实现
#include
分析: bubble_sort函数中,有两层循环。外层用j来自增,内层用i来自增。 外层的循环自增的慢,内层的循环自增的快。 内层的循环i要都自增完,外层的j才会自加1。
执行过程为: j = 0, i = 0, if(a[0] > a[1])为真,a[0]与a[1]交换,数组变为{4,5,3,2,1} j = 0, i = 1, if(a[1] > a[2])为真,a[1]与a[2]交换,数组变为{4,3,5,2,1} j = 0, i = 2, if为真,a[2]与a[3]交换,数组变为{4, 3, 2, 5, 1} j = 0, i = 3, if为真,a[3]与a[4]交换,数组变为{4, 3, 2, 1, 5}, 此时最大的5已经挪到最后的位置,接下来5就不用再处理。
j = 1, i = 0, if为真,a[0]与a[1]交换,数组变为{3, 4, 2, 1, 5} j = 1, i = 1, if为真,a[1]与a[2]交换,数组变为{3, 2, 4, 1, 5} j = 1, i = 2, if为真,a[2]与a[3]交换,数组变为{3, 2, 1, 4, 5}, 此时4已经挪到倒数第二个位置,接下来4和5就不用再处理。
j = 2, i = 0, if为真,a[0]与a[1]交换,数组变为{2, 3, 1, 4, 5} j = 2, i = 1, if为真,a[1]与a[2]交换,数组变为{2, 1, 3, 4, 5}, 此时3已经挪到倒数第三个位置,接下来3、4和5就不用再处理。
j = 3, i = 0, if为真,a[0]与a[1]交换,数组变为{1, 2, 3, 4, 5}, 此时2已经挪到倒数第四个位置,接下来2、3、4和5就不用再处理。 剩余一个数1,也不用交换了。至此排序完毕。
输出结果:
4 5 3 2 1 4 3 5 2 1 4 3 2 5 1 4 3 2 1 5 ********************3 4 2 1 5 3 2 4 1 5 3 2 1 4 5 ********************2 3 1 4 5 2 1 3 4 5 ********************1 2 3 4 5 ********************
(三)作业
1 编写程序并运行出正确结果 2 断点调试 3 默写
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~