冒泡排序算法原理

电子说

1.2w人已加入

描述

冒泡法是一种简单的排序方法,它的实现非常简单。首先对n个项目进行扫描,比较相领两个项目的大小,若发现违背大小次序则进行互换,由此可以使n个项目中的最大者换到最后。

然后对剩下的未排序好的项目再进行扫描,使它们的最大者换到表的最后。以此类推,直到将表全部排序好为止。这种排序方法,每遍扫描以后,都缩短了待排序表的长度,如果在某次扫描过程中,没有发现交换,则排序结束。

冒泡排序算法原理

1、从后往前依次比较相邻的元素。若是要按照升序排序,则后面的元素比前面的小,就交换这2个元素;降序则相反。

2、对每一对相邻元素作同样的工作,从第一对到最后一对。进行一轮比较交换下来,最后的元素就会是最小(或最大)的数了,这个数就不用参与后面的比较操作了。

3、针对所有的元素重复以上的步骤。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

为了尽量缩短待排序表的长度,避免下一次扫描中可能出现的不必要的比较,在每次扫描过程中,一方面要记录进行元素交换的次数,另一方面要记住在本次扫描中的最后一次进行交换的位置。在这个位置以后没有发生过交换,则说明在这个位置以后的元素实际上已经排好次序。

总的来说,冒泡法基本思想是重复的进行整个数组的排序,一次比较两个元素(两两排序),如果它们顺序不符合就交换,重复这样直到数列没有再需要交换的数为止(结束条件)。因为它就好像气泡一样,轻的气泡会往上漂浮,在不断漂浮的过程中,发生了两两交换过程,所以叫冒泡排序。

实例说明:

输入:待排序表L(1:n)。 

输出:有序表L(1:n)。 

PROCEDURE LBUBSORT(L,N) 

F←n 

WHILE F>0 DO 

{k←F-1:F←0 

FOR j=1 TO k DO 

{IF L(j)>L(j+1) THEN 

{L(j)与L(j+1)交换:F←j} 

RETURN 

在这个算法中,k代表在每次扫描过程中需要进行经较的项目数;当F>0时,表示还需要进行扫描比较,并且,它的数值表示上一次扫描中发生最后一次交换的位置。由上例可知,在最坏情况下,冒泡排序法需要进行n-1遍扫描,共要作[n(n-1)]/2次比较和元素的交换。但这个工作量并不是必需的,一般情况下要小于这个工作量。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分