课件15张PPT。冒泡排序所谓冒泡排序,形象的说,就是在将一组数据从小到大的顺序排列时,小的数据视为质量较轻,大的数据视为质量较重,小的数据好比水中的气泡,往上方移动,较大的数据好比是石头,往下沉,最重的会沉到底,最轻的会浮到顶,反复进行比较,直到数据列排成有序列实例分析请将下列数据按从大到小的顺序,利用冒泡法排序{30,38,65,97,76,13,27,49}1排序号:2排序现将8号数据49和7号数据27比较,因为49>27所以,49和27的位置互换,变为:i=1:第一次排序j=8:第一步:8号、7号排序49271376976538304927137697653830t49t=d(8) : d(8)=d(7) : d(7)=tj=7:第二步:7号6号排序4927137697653830现将7号数据49和6号数据13比较,因为49>13所以,49和13的位置互换,变为:4927137697653830t49t=d(7) : d(7)=d(6) : d(6)=tj=6:第三步:比较6、5号数据j=5:第四步比较5、4号数据方法同第三步,因为76<97所以数据顺序不变1327497697653830现将6号数据49和5号数据76比较,因为49<76所以,49和76的位置不互换。1327497697653830j=4 :第五步:比较4、3号数据1327497697653830现将4号数据97和3号数据65比较,因为97>65所以,97和65的位置互换。1327497697653830t 97t=d(4) : d(4)=d(3) : d(3)=tj=3:第六步:比较3、2号数据:1327497665973830现将3号数据97和2号数据38比较,因为97>38所以,97和38的位置互换。1327497665973830t 97t=d(3) : d(3)=d(2) : d(2)=tj=2 第七步:比较2、1号数据1327497665389730现将2号数据97和1号数据30比较,因为97>30所以,97和30的位置互换。1327497665389730t97t=d(2) : d(2)=d(1) : d(1)=t这样就完成了第一次排序,它的基本特征是将最大数排到了最左边,然后再从第8个开始,进行第二次排序,将第二大的数据排到了第二位,反复下去,就可以完成排序。一共要进行7次才能完成。1327497665383097经过第二次排序,数据顺序应该是什么样的?2713496538307697经过第三次呢?2713493830657697思考算法分析第1次冒泡排序时(i=1) j 从 8 开始到2For j=8 to 2 step -1
if d(j) if d(j) if d(j) 每次 j 从8 到i+1 时
d(j)>d(j-1)时,则交换它们第4次冒泡排序时(i=4) j 从 8 开始到5For j=8 to 5 step -1
if d(j) if d(j) if d(j) if d(j)外循环变量i从 到 变化,
内循环变量j从 到 变化。 n-11n-1ni+1a(1)、a(2)、a(3)、…a(n-2)、a(n-1)、a(n)总结(以降序为例)数组d(1 to n)
For i = 1 To n-1 ( i:n个数排序共需进行n-1趟)
For j = n To i + 1 Step -1 (j :控制元素对比与交换)
if d(j)>d(j-1) then (每一趟从后往前,数据比较)
t=d(j) : d(j)=d(j-1) : d(j-1)=t (满足条件,数据交换)
Next j
Next i思考:如果以升序进行冒泡排序,划线处的程序代码
如何修改?今年北京奥运会有七个国家或地区参加,开幕式按照国家或地区英文名从小到大的次序出场,已知这七个国家或地区的名字,请写出经前三趟冒泡后出场的次序表。
England, France , American , Italy, Japan, China, Hongkong课堂练习2、对“648251”中的6个数码进行两趟冒泡排序后即为某游戏中数字密码锁的密码,该密码是( )
A)684521 B)462518
C)126485 D)864521C3、有8个小朋友的身高(单位:厘米)分别是124、126、120、123、125、128、130、150,若采用冒泡排序算法对其进行从大到小排序,则第2趟排序共需交换数据的次数是( )
A. 4 B. 5 C. 7 D. 6D