vb冒泡排序法==
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i:= i +1
否 i >7
是
j:=j+1
否
j>7
是
结束
思考交流:
在我们刚才的算法流程图中,每一趟的排序
我们都进行了7次,是否每一趟的排序都需 要进行7次比较呢?
那么现在请你对我们刚才画出的算法流程图
进行优化,设计出更好的流程图避免wk.baidu.com必要 的工作。
观察原数据与第一、二趟排序后的数据
序号 1 2 3 4 5 6 7 8 数据 49 38 65 97 76 13 27 49
观察原数据与第一、二趟排序后的数据
序号 1 2 3 4 5 6 7 8 数据 49 38 65 97 76 13 27 49
序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 27 49 97
序号 1 2 3 4 5 6 7 8 数据 38 49 65 13 27 49 76 97
R[1], R[2], R[3], R[4], R[5], R[6], R[7], R[8]
分析:
是
开始 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]
vb冒泡排序法
情景:
1.观察水中的气泡往上冒 的情景,气泡往上冒的时 候有什么特点呢?
2. 第一次上体育课集 队的时候体育老师是怎 么样帮我们按身材的高 低顺序进行排队的?
冒泡原理
• 冒泡排序和气泡在水中不断往上冒的情况有些类似。 气泡大的(大的数据)在下面,气泡小的(小的 数据)在上面。
冒泡排序的基本原理是对存放原始数据的数 组,按从前往后的方向进行多次扫描,每次 扫描称为一趟。当发现相邻两个数据的次序 与排序要求的大小次序不符合时,即将这两 个数据进行互换。这样,较小的数据就会逐 个向前移动,好象气泡向上浮起一样。
RR[i[+21]=]:=t t
i:= i +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
分析:后面的排序只要 按照这种方法不断进行就 行了。
那么同样的结构要进 行多少次呢?
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
第一趟排序后的数据和序号 序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 27 49 97
第二趟排序的步骤: 序号 1 2 3 4 5 6 7 8 数据 38 49 65 7163 172367 274769 4796 97
38<494,保9<持65不,6保变5<持7不67,6变保>1持3不,7交6变>换27位, 置交76换7>64位<99置,7交, 保换持位不置变 经过第二趟排序,实把现第了二什大么的目数的沉?到倒数第二个位置了!
原数据和序号 序号 1 2 3 4 5 6 7 8 数据 49 38 65 97 76 13 27 49 第一趟排序的步骤: 序号 1 2 3 4 5 6 7 8 数据 4398 3489 65 9776 791673 19237 29479 4997
49>384,9交<换65位, 6保置5<持9不7,变保9持7>不796变7,>交139换,7交>位29换置7,>位交49置换, 交位换置位置 第经对一过比趟第原排 一数序 趟据, 排经一 序过共,第一进把趟行最排了大序多的,少数实次沉现比到了较 最什? 底么了目!的?
R[3]:= t
有没有办法让流程图更 加简洁呢?
不断的这样画下去要画多少个 类似的选择结构?
…
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]
作业:P128 A3
选做题:
设计一个算法流程图,让计算机输出九九 乘法表。
课后思考交流:
在刚才的冒泡排序中是否一定要进行7趟? 针对这个问题你有什么好的方法对我们的 算法再进行优化?
j>0
否
结束
小结:
本节课主要学习了冒泡排序的基本原理 及其算法流程图,冒泡排序是最常用也是最 基本的排序方法,很多其他的排序方法都可 以由它改进而来,比如现在常用的快速排序 法等。双循环是我们本节课刚接触的一种复 杂结构,应用到本节知识的实例很多,比如 :打印九九乘法口诀表、彩票数字选择器, 工作表安排等等。
序号 1 2 3 4 5 6 7 8 数据 38 49 65 76 13 27 49 97
序号 1 2 3 4 5 6 7 8 数据 38 49 65 13 27 49 76 97
我们知道经过第一趟的排序之后,最大的一个数 已经排到最后了这样在进行第二趟排序时有没有 必要再对第7、8个数据再进行排序呢?
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
是
问:为那了么使我这们一预组计无最序多数一组共完要全经按过照多要少求次排成序呢? 从小到大我们还需不需要再继续排序呢?
例题:
下面我们继续考虑,将我们刚才排序的全过程 用算法流程图表示出来。
我们把它分成几步来做,第一步,先把第一 趟的排序用流程图描述出来。
1.画出第一趟排序的算法流程图:假设该数据列为
做一做:
下面我们请几位同学上来讲台为我们演示 一下这种排序的过程,首先按照被叫到的 顺序排列,再用这种方法由低到高进行排 序。
例:用冒泡排序的方法将下面一组无序数组 排成从小到大
{ 49,38,65,97,76,13,27,49 }
分析:首先为了方便分析,我们把所给的数据 先用一个表格列出来,如下:
参照我们第一趟排序的画法、第二趟排序的流程图 此时只需进行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