现在的位置: 首页 > 综合 > 正文

图解排序算法及C语言实现之 —— 冒泡排序:Bubble Sort

2017年08月26日 ⁄ 综合 ⁄ 共 1651字 ⁄ 字号 评论关闭

       近来闲着没事,把《数据结构》温习了一遍,想着用图解的方式来描述一下排序的算法。好了,废话少说,下面进入正题。

先讲最简单的冒泡排序。

 

       一、定义及算法原理

           1.什么叫冒泡排序?
                 形象的说就是水泡由小到大从底下往上冒,最终形成从上到下按小到大顺序排列的序列。
           2.基本算法原理
                 元素从底到上,两两比较进行交换,小的值放在上面,直到最后,形成由小到大的序列。
     

           3. 图形表示,下图是排序后的最终结果,怎么样?

                 如果没有理解冒泡排序,是否看得一头雾水?如果您已经掌握这个简单的排序,恭喜您,您可以不用往下看了。

     

 

             接着继续,以上只是最终的结果,这个结果是怎么来的呢?请看以下图形演示。

             二、图解排序实现过程:

                  第一遍

                         top=0,bottom=len-1到1
              

                            从这个图中,你看到了什么?没错,蓝色的10从最底下开始往上比较,相连的数比它大则交换,直到最顶端,变成绿色表示已经排好了位置,

                    它上面的数到跑到下面来,等待下一轮的排序。

                 

                    第二遍

                            top=1, bottom=len-1,到2。这轮过后,10, 20两个数排好了位置,比它大的数都排在它的下面。
                   

                  第三遍
                           top=2, bottom=len-1, 到3

                   

                第四遍
                         top=3, bottom=len-1, 到4

                  

              第五遍,也是最后一遍
                       top=4,bottom=len-1, 到5,len(元素个数)=6, 也就是比较最后2个元素的大小,50<60, 什么都不用处理,排序结束。

              

 

              如何? 通过以上的图形演示过程,应该明白冒泡排序的算法过程了吧?如果还不明白,只能说我的水平太烂,呵呵。

       

          三、程序实现步骤图

                紫色圈圈是待排序的元素,橙色的是排序步骤,只有3步,是否很简单?

               1. top=0, 到len-2                                                                     

               2. bottom=len-1, 到top+1
               3. 从最后开始比较2个元素的大小,如果底下那个比上面的小,则交换位置。
                                                                                                            

           四、C语言代码实现

            

              好了,演示结束,这是一个很简单的冒泡排序,也许你根本不用看就能一口气写出这个算法的程序。

              现在只是用这个简单的图解步骤演示排序的过程,后面会用这种方法演示一些复杂一点的排序算法,有助于我们的理解。

              谢谢!

抱歉!评论已关闭.