资源描述:
《《冒泡排序算法》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、冒泡排序情景:1.观察水中的气泡往上冒的情景,气泡往上冒的时候有什么特点呢?2.第一次上体育课集队的时候体育老师是怎么样帮我们按身材的高低顺序进行排队的?冒泡原理冒泡排序和气泡在水中不断往上冒的情况有些类似。气泡大的(大的数据)在下面,气泡小的(小的数据)在上面。冒泡排序的基本原理是对存放原始数据的数组,按从前往后的方向进行多次扫描,每次扫描称为一趟。当发现相邻两个数据的次序与排序要求的大小次序不符合时,即将这两个数据进行互换。这样,较小的数据就会逐个向前移动,好象气泡向上浮起一样。例:用冒泡排序的方法将下面一组无序数组排成从小到大{49,38,65,97,76,13,27,49}分
2、析:首先为了方便分析,我们把所给的数据先用一个表格列出来,如下:对比原数据经过第一趟排序,实现了什么目的?第一趟排序,一共进行了多少次比较?4927137697653849数据87654321序号49>38,交换位置原数据和序号序号12345678数据4938659776132749第一趟排序的步骤:序号12345678数据3849659776132749序号12345678数据3849659776132749序号12345678数据3849659776132749序号12345678数据3849657697132749序号12345678数据3849657613972749序号12
3、345678数据3849657613279749序号12345678数据3849657613274997经过第一趟排序,把最大的数沉到最底了!49<65,保持不变65<97,保持不变97>76,交换位置97>13,交换位置97>27,交换位置97>49,交换位置经过第二趟排序,实现了什么目的?经过第二趟排序,把第二大的数沉到倒数第二个位置了!9749271376654938数据87654321序号38<49,保持不变第一趟排序后的数据和序号第二趟排序的步骤:序号12345678数据384965761327499749<65,保持不变65<76,保持不变76>13,交换位置76>27,
4、交换位置76>49,交换位置序号12345678数据3849657613274997序号12345678数据3849657613274997序号12345678数据3849657613274997序号12345678数据3849651376274997序号12345678数据3849651327764997序号12345678数据384965132749769776<97,保持不变序号12345678数据3849651327497697观察原数据与第一、二趟排序后的数据序号12345678数据3849657613274997序号12345678数据3849651327497697序号
5、12345678数据4938659776132749问:为了使这一组无序数组完全按照要求排成从小到大我们还需不需要再继续排序呢?问:那么我们预计最多一共要经过多少次排序呢?例题:下面我们继续考虑,将我们刚才排序的全过程用算法流程图表示出来。我们把它分成几步来做,第一步,先把第一趟的排序用流程图描述出来。R[1]:=R[2]t:=R[1]R[1]:=R[2]R[2]:=t开始1.画出第一趟排序的算法流程图:假设该数据列为R[1],R[2],R[3],R[4],R[5],R[6],R[7],R[8]第一步做什么?R[1]>R[2]是否如何交换数据,这样行吗?R[2]>R[3]是否t:=R
6、[2]R[2]:=R[3]R[3]:=t…不断的这样画下去要画多少个类似的选择结构?有没有办法让流程图更加简洁呢?这样交换数据,会有什么问题?分析:R[1]>R[2]R[1]=R[2]是否t=R[1]R[1]=R[2]R[2]=t否是i:=i+1结束开始R[1]>R[2]R[1]=R[2]是否t=R[1]R[1]=R[2]R[2]=ti:=1R[i]>R[i+1]i>7t:=R[i]R[i]:=R[i+1]R[i+1]:=t分析:1.画出第一趟排序的算法流程图:用简洁的循环结构进行表示否是i:=i+1结束开始R[1]>R[2]R[1]=R[2]是否t=R[2]R[1]=R[2]R[2
7、]=ti:=1R[i]>R[i+1]t:=R[i]R[i]:=R[i+1]R[i+1]:=ti>7分析:后面的排序只要按照这种方法不断进行就行了。2、按照这种画法第二趟、第三趟、第四趟排序的流程图怎样画?怎样把整个冒泡排序的流程图画出来?那么同样的结构要进行多少次呢?有没有办法让流程图更加简洁呢?是3、怎样把整个冒泡排序的流程图画出来?开始结束j>7j:=1否j:=j+1是i>7否i:=1i:=i+1是否R[i]>R[i+1]t:=R[i]R[i]:=R[