冒泡排序及优化练习ppt课件.pptx
《冒泡排序及优化练习ppt课件.pptx》由会员分享,可在线阅读,更多相关《冒泡排序及优化练习ppt课件.pptx(28页珍藏版)》请在三一办公上搜索。
1、2020,冒泡排序及优化,延迟符,冒泡排序应用,冒泡也有变式,即将数组元素进行两两比较,若相邻两个元素中的数据不符合排序,就交换位置。 例1: 某数组c共由4个元素构成,每个元素的值如下表所示:,采用冒泡排序思想进行升序排序,从最下面的一个元素起,自下而上的比较相邻两个元素中的数据,整个排序过程如下所示:,冒泡排序应用,23,15,38,30,冒泡排序应用,第一趟加工处理过程:,第一趟加工共比较3次,处理完成后,最小的元素15存储在了c(1)中。第二趟加工处理过程:,第二趟加工共比较2次,处理完成后,第2个最小的元素23存储在了c(2)中。,延迟符,冒泡排序应用,第三趟加工处理过程:,第三趟加
2、工共比较1次,处理完成后,第3个小的元素32存储在了c(3)中。 4个元素共需进行3趟加工处理,总的比较次数为3216次。对n个元素的数组,用冒泡法进行排序时,共需比较_次。,n(n-1)/2,冒泡排序算法,4个元素进行冒泡排序时,需要三趟,用i表示趟数,i 1,i=3?,结束,Y,i i+1,N,进行第i趟冒泡排序,开始,4个元素进行冒泡排序时,需要三趟,用i表示趟数,i 1,i=3?,结束,Y,i i+1,N,j表示元素的位置a(j)与a(j-1)是相邻的元素,j=i+1?,开始,冒泡排序算法,延迟符,冒泡排序算法的程序实现,冒泡排序程序的实现可用双重For循环来实现,外层For循环控制是
3、第几遍加工 ,内层For循环控制进行排序的数组元素下标的变化范围。由于每趟加工完成后,进行排序的范围会发生变化(每趟减少一个),故内层For循环变量的下界由外层循环变量决定。 现有n个数据,分别存放在数组变量a(1 To n)当中,用冒泡排序算法表示结构如下:,延迟符,冒泡排序算法的基本思想,冒泡排序的代码如下(升序):For i=1 to n-1 n个数需要n-1次排序 For j=n to i+1 step -1 从后往前,两两比较,一直到第i+1个数 If a(j) a(j-1)。,用冒泡排序的方法将下面一组无序数组排成从小到大的顺序。, 49,38,65,97,76,13,27,49
4、,分析:首先为了方便分析,我们把所给的数据先用一个表格列出来,如下:,对比原数据经过第一趟排序,实现了什么目的?,第一趟排序,一共进行了多少次比较?,4938,交换位置,原数据和序号,第一趟排序的步骤:,经过第一趟排序,把最大的数沉到最底了!,4965, 保持不变,6597, 保持不变,9776, 交换位置,9713, 交换位置,9727, 交换位置,9749, 交换位置,经过第二趟排序,实现了什么目的?,经过第二趟排序,把第二大的数沉到倒数第二个位置了!,3849,保持不变,第一趟排序后的数据和序号,第二趟排序的步骤:,4965, 保持不变,6576, 保持不变,7613, 交换位置,762
5、7, 交换位置,7649, 交换位置,7697, 保持不变,观察原数据与第一、二趟排序后的数据,问:为了使这一组无序数组完全按照要求排成从小到大我们还需不需要再继续排序呢?,问:那么我们预计最多一共要经过多少次排序呢?,初始,1趟,2趟,3趟,4趟,5趟,6趟,7趟,延迟符,冒泡排序算法的基本思想,冒泡排序的代码如下(升序):For i=1 to n-1 n个数需要n-1次排序 For j=1 to n-i 从前往后,两两比较,一直到第n-i个数 If a(j) a(j+1) then 比较相邻的两个数 temp=a(j) : a(j)=a(j+1) : a(j+1)=temp 小的在后面,则
6、交换 End If Next jNext i(注):从小到大排序,If语句中条件表达式为:a(j)a(j+1); 从大到小排序,If语句中条件表达式为:a(j)a(j+1)。,1. 有以下VB 程序段For i = 1 To 3 For j = i To 5 If a(j) a(j + 1) Then t = a(j): a(j) = a(j+1): a(j+1)=t End If Next j List1.AddItem Str(a(i)Next i a(1)到a(6)的初始值依次为“865793 ”,经过该程序段“加工”后,列表框List1中显示的是( )A8 7 6 B8 7 9 C6
7、5 3 D5 6 7,C,2.有以下VB 程序段For i = 1 To 2 For j = 1 To 5-i If a(j+1) a(j) Then t = a(j): a(j) = a(j+1): a(j+1) = t End If Next jNext i数据“56,23,78,11,8”依次存放在数组a(1)到a(5)中,执行下列VB程序段后,数组a(1)到a(5)中的数据依次为( )A. 8,11,23,56,78 B. 23,11,8,56,78C. 11,8,23,56,78 D. 8,11,56,23,78,B,3有如下VB 程序段:For i = 6 To 4 Step -1
8、 j = 1 Do While j a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t End If j = j + 1 LoopNext i数组元素a(1)到a(6)的值依次为“26,13,23,18,7,14”,执行该程序段后,数组元素a(1)到a(6)的值依次为( )A26,13,23,18,7,14 B13,7,14,18,23,26C7,13,14,18,23,26 D26,23,18,14,13,7,B,4.冒泡排序在某一遍加工过程中没有数据交换时,说明数据已经有序,优化程序段如下 i = 1: flag = True Do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 冒泡 排序 优化 练习 ppt 课件
链接地址:https://www.31ppt.com/p-1315434.html