c语言冒泡排序详解

冒泡排序是什么?先看看书上的定义

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5om-5LmQ6Laj6ICM5bey,size_20,color_FFFFFF,t_70,g_se,x_16

如果是新手,一开始看是很懵的,下面看代码和解释。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5om-5LmQ6Laj6ICM5bey,size_20,color_FFFFFF,t_70,g_se,x_16

 

没错,这段代码没有注释,要是注释有用的话还要人讲干嘛?并且也不用函数调用什么的,只是讲冒泡的一个思维。

首先头文件会写吧?主函数会写吧?数组会定义并且会写9到0吧?

这个程序的目的是从小到大排序知道吧?

先从两个for循环开始讲(两个for的时候内层的for先执行完,外层的for才会加+1,怕有些人不知道)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5om-5LmQ6Laj6ICM5bey,size_20,color_FFFFFF,t_70,g_se,x_16

 第一个for定义了一个i用来控制循环的趟数,一共是9趟。说人话就是:一共是10个数,你要从小到大排序,那就把最小的数一个个扔在前面,扔9次不就能排好10个数了?

第二个for定义了一个j,j=9表示从最后一个数开始,因为数组的下标是从0开始的,所以9就表示第10个数了,而我们这个代码的比较也是从后面开始的。那么j为什么要大于i?因为内层for每次循环完(这里的循环完表示跳出内层循环,外层循环+1)不就把一个最小的数放在前面了吗?对于排好的数那就没必要每次再比较一次吧?所以就随着i每次的增加,比较的数就相应的减少

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5om-5LmQ6Laj6ICM5bey,size_20,color_FFFFFF,t_70,g_se,x_16

 接下来就到了if判断,这里判断的是后一个数是否比前一个数小,如果小的话就交换,因为是从小到大排序。交换的话应该都会吧?其实顺序无所谓,只要最后完成交换就行了,定义一个变量用来存放数组的元素,然后其中一个数组赋值给另外一个数组,再把变量赋值给没有赋值过的数组。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5om-5LmQ6Laj6ICM5bey,size_18,color_FFFFFF,t_70,g_se,x_16

 最后再把排序好的打印出来就行。

总结一下吧,冒泡排序,也就是每次比较相邻两个数的大小,你可以根据自己是从大到小排序还是从小到大排序来判断,当然也可以从头开始比较,也可以从后面开始来比较,看个人,再玩得花点的也可以用函数传参,我这里只是讲冒泡的一个思路。

 

 

  • 21
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值