冒泡排序算法 PPT
i:= i +1
否 i >7
是 结束
i:= i +1
否 i >6
是 结束
那么我们可以把整个冒泡排序的流
开始
程图优化成如图所示:
j:=7
分析:
i:=1
是 R[i ]>R[i +1] 否 t:=R[i ] R[i ]:=R[i +1] R[i +1]:= t
i:= i +1
否 i >j
是
j:=j-1
是
否 i >7
是 结束
2、按照这种画法第二趟、第三趟、第四趟排序的流程图 怎样画?怎样把整个冒泡排序的流程图画出来?
开始
i:=1
是 RR[i[]1>]>RR[i[+2]1] 否 tt:==RR[[2i ]] RR[i[]1:]==RR[[i2+]1] RR[i[+21]=]:=t t
分析:后面的排序只要 按照这种方法不断进行就 行了。
例:用冒泡排序的方法将下面一组无序数组 排成从小到大
{ 49,38,65,97,76,13,27,49 }
分析:首先为了方便分析,我们把所给的数据 先用一个表格列出来,如下:
原数据和序号
第一趟排序的步骤: 序号 1 2 3 4 5 6 7 8 数据 49 38 65 97 76 13 27 49
那么同样的结构要进 行多少次呢?
i:= i +1
否 i >7
是 结束
有没有办法让流程图更 加简洁呢?
3、怎样把整个冒泡排序的流
开始
程图画出来?
j:=1
分析:
i:=1
这是一个两重循环 结构
是 R[i ]>R[i +1] 否 t:=R[i ] R[i ]:=R[i +1] R[i +1]:= t
i:= i +1
…
1.画出第一趟排序的算法流程图: 用简洁的循环结构进行表示
分析:
开始
是
i:=1
R[1]>R[2]
否
t=R[1是] RR[i[]1>]>RR[i[+2]1] 否 RRR[iR[[tt]11:=:[=]]=2R==RR][RR=[1[i[[i]t22]+]]1]
RR[i[+21]=]:=t t
i:= i +1
49>384,9交<换65位, 6保置5<持9不7,变保9持7>不796变7,>交139换,7交>位29换置7,>位交49置换, 交位换置位置 第经对一过比趟第原排 一数序 趟据, 排经一 序过共,第一进把趟行最排了大序多的,少数实次沉现比到了较 最什? 底么了目!的?
第一趟排序后的数据和序号
第二趟排序的步骤: 序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 27 49 97
否 i >7
是
j:=j+1
否
j>7
是
结束
思考交流:
在我们刚才的算法流程图中,每一趟的排序
我们都进行了7次,是否每一趟的排序都需 要进行7次比较呢?
那么现在请你对我们刚才画出的算法流程图
进行优化,设计出更好的流程图避免不必要 的工作。
观察原数据与第一、二趟排序后的数据
我们知道经过第一趟的排序之后,最大的一个数 已经排到最后了这样在进行第二趟排序时有没有 必要再对第7、8个数据再进行排序呢?
j>0
否
结束
参照我们第一趟排序的画法、第二趟排序的流程图 此时只需进行6次。
开始
分析:
开始
i:=1
i:=1
是 RR[i[]1>]>RR[i[+2]1] 否 tt:==RR[[2i ]] RR[i[]1:]==RR[[i2+]1] RR[i[+21]=]:=t t
是 RR[i[]1>]>RR[i[+2]1] 否 tt:==RR[[2i ]] RR[i[]1:]==RR[[i2+]1] RR[i[+21]=]:=t t
38<494,保9<持65不,6保变5<持7不67,6变保>1持3不,7交6变>换27位, 置交76换7>64位<99置,7交, 保换持位不置变 经过第二趟排序,实把现第了二什大么的目的数据
问:为那了么使我这们一预组计无最序多数一组共完要全经按过照多要少求次排成序呢? 从小到大我们还需不需要再继续排序呢?
分析:
是
开始 R[1]>R[2]
第一步做什么? 否
t:=R[1] R[1]:=R[2]
R[2]:= t
如这会何这样有交样交什换行换么数吗数问据?据题,,?
是 R[2]>R[3] 否
t:=R[2] R[2]:=R[3]
R[3]:= t
有没有办法让流程图更 加简洁呢?
不断的这样画下去要画多少个 类似的选择结构?
冒泡排序算法
情景:
1.观察水中的气泡往上冒 的情景,气泡往上冒的时 候有什么特点呢?
2. 第一次上体育课集 队的时候体育老师是怎 么样帮我们按身材的高 低顺序进行排队的?
冒泡原理
冒泡排序和气泡在水中不断往上冒的情况有 些类似。气泡大的(大的数据)在下面,气 泡小的(小的数据)在上面。
冒泡排序的基本原理是对存放原始数据的数 组,按从前往后的方向进行多次扫描,每次 扫描称为一趟。当发现相邻两个数据的次序 与排序要求的大小次序不符合时,即将这两 个数据进行互换。这样,较小的数据就会逐 个向前移动,好象气泡向上浮起一样。
大家应该也有点累了,稍作休息
大家有疑问的,可以询问和交
例题:
下面我们继续考虑,将我们刚才排序的全过程 用算法流程图表示出来。
我们把它分成几步来做,第一步,先把第一 趟的排序用流程图描述出来。
1.画出第一趟排序的算法流程图:假设该数据列为
R[1], R[2], R[3], R[4], R[5], R[6], R[7], R[8]