c语言初级学习----十大排序算法!

c语言初级学习----基本排序算法----->冒泡排序!

前言:

       在小编刚接触到数组的时候,脑子里面抽象的把一维数组理解为一个一维容器,然后容器里面有若干个小元素,杂乱无章,但是我们往往处理这些小元素的时候,都会先对这些小元素先进行一定的操作,按一定的特定的顺序呈现在容器中。
        排序算法有很多,不同的排序算法分别用于不同的场所,在我之后发表的几篇文章,我都会和大家介绍我所接触的几种排序算法,希望大家取其精华,去其糟粕。

冒泡排序:

======》》顾名思义:把一个数想象成一个水泡,气泡越大,这个气泡就要冒在最上面。把一串数列想象成一串气泡,在每次排序过程中,把大的气泡放上面,通过不停的进行置换,调序,来达到一个有序数列,换句话说,我们将整个序列遍历一次,都需要将这个序列中最大的气泡放在最前面,当然这是从大到小的排序过程。如果是从小到大的过程,是上面反的过程。

      先给大家举个列子:

                                      冒泡排序

       在这个数列中,我们把整个数列按照从小到大的顺序(升序)进行排列,也就是每次取排序序列的最大值放到该序列最后面,第一次排序中,8和3比较大小,因为8 比3 小,所以8与3互换位置,再将8和6进行比较,6仍然比8小,再次进行位置互换,以此类推…
我们能够知道8在第一排序列中最佳位置应该在数列的最后,第一次冒泡排序我们已经完成。
       确定好8的位置,我们再来确定该数列其它数的位置顺序,依次确定6的位置,4的位置,3的位置,最后2的位置只有一个选择,不需要冒泡。显然,我们一串5个数的数列,需要4次外循环次数。
      

PS:

        这里,我和大家提一下冒泡排序的优化算法,每次冒泡,我们都不需要和之前冒泡出的最大值进行比较!举个列子,当我们需要对8进行完成排序,需要内循环4次,排序之后8不再参与数列的排序,所以剩下参加排序的数为:3 6 4 2~~按照这种说法我们每次排序都比之前少一次内循环次数。而不必要每次都拿一个数与除自己之外的所有数进行比较。(好绕人~~~,我都有点晕了!)

应用:

        冒泡法有一个很形象的名字,冒泡法排序是一种就地排序,冒泡排序还是一种稳定的排序,主要应用于待排序的元素规模小。但是从空间复杂度和时间复杂度来说冒泡排序算法并不是最好的排序方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值