c语言中两种经典的排序算法,冒泡排序,选择排序(初学)

冒泡排序:

冒泡排序的主要思路是将一个数组中最大的元素沉到数组的最后,依次进行,最后完成对数组的排列,由思路可知,最终数组的顺序是从小到大的。

 

 代码的主体是图中灰色的部分在此作出解释:

排序的主要流程就是每一次循环从第一个开始依次与相邻的即下一个元素进行比较,如果前一个元素大于后一个元素,则将前一个元素与后一个元素进行互换。每一次循环结束后,数组中最后存放的一定是前几个元素中最大的元素,下一次循环时将不再遍历这最后一个,以此类推,最后将整个数组排好序。

因为这边数组中一共只有5个元素,所以仅需将4个元素排列好,数组便完成了排序。

对于5-i-1的解释:将数组看成是一个由一节一节车厢组成的火车,每循环一次,火车的最后一节都掉落,5-i就代表了该火车还剩几节车厢,而得知有几节车厢便能够得知需要进行几次,如果想不明白可以类比一下:如果3节车厢只需要进行2次的比较就能将最大的那个元素存放到数组的最后,如果是2节车厢,仅需要一次即可。所以这边需要进行比较的次数就是车厢数-1.

冒泡排序中易写错的地方:

可能会将a【j】写成a【i】,注意我们每次都是从第一个元素开始的,若写成i的话每次开始首元素便不再是第一个,排序也变的毫无意义。 

选择排序:

选择排序的前身其实是在一个数组中找出最大值/最小值

 找最大值/最小值就是利用了打擂台的思想,即将第一个看成最大/最小的依次与下面的元素进行比较,而选择排序就是利用这种思想进行排序的。

 每次默认将第i个元素看成最大的,与剩下的元素进行打擂台,即找出剩下元素中真正最大的那个元素,俩者进行互换。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值