资源简介 (共23张PPT)VB代码:你还记得我们吗?23333。。。。信息的概念及特征 选择排序的基本思想你 猜mid干啥用的? 行if语句来报道!冒泡排序的基本代码 我是谁,我在那?冒泡排序的算法思想 你猜我猜不猜hhhhhh多媒体携手flash,photoshop,goldwave,会声会影发来贺电list1.clear 清屏行不行? 对分查找:返场嘉宾在这里~~~~开学了,朋友们!十八线女主播小应发来贺电。。。。 6666666666666冒泡排序:让一让,让一让,我的地盘!我做主!对分:我家中间值咋求来着? 选择排序卑微露头,溜了溜了list1.additem 疯狂输出2333 数据库:VB大哥我也来啦!块if:上次有个人说我瘦瘦高高来着,我看看是谁?来个for无限循环怎么样hhhhhhhh…… Next:哼,没我你怎么循环do:楼上for大哥冷静,电脑死机对谁都没好处!!!1m= (i+j)\2来了来了 递归小老弟来蹭个镜头冒泡:我!的!主!场!temp = d(j)d(j) = d(j - 1)d(j - 1) = tempRnd 还有人记得我嘛? 没人关心开学考吗????Int函数 :楼上rnd我罩的!都给我闪开Fix函数:默默路过~~~~~00|对分作业讲解(2018.04选考真题)数组a为一组正整数,奇数在前,偶数在后。奇数与偶数已分别按升序排序。依据对分查找思想:设计一个在数组a中查找数据Key的程序。实现该功能的VB程序段如下:i = 1: j = 10Key = Val(Text1.Text)Do While i <= jm = (i + j) \ 2If a(m) = Key Then Exit Do 'Exit Do表示退出循环If Key Mod 2 = 1 And a(m) Mod 2 = 0 Then(1)ElseIf Key Mod 2 = 0 And a(m) Mod 2 = 1 Then(2)Else(3)End IfLoopIf i > j Then s = "没有找到!" Else s = "位置:" + Str(m)Text2.Text = s上述程序中方框处可选语句为:①i = m + 1②j = m - 1③If Key < a(m) Then j = m - 1 Else i = m + 1则(1)、(2)、(3)处语句依次是( )A.①、②、③ B.①、③、②C.②、①、③ D.③、②、①C00|对分作业讲解2018.11选考真题)数组a中存储的是左右交替上升的n个正整数,如下表所示:依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。00|对分作业讲解Private Sub Command1_Click()Const n = 6Dim a(1 To n) As Integer, flag As BooleanDim i As Integer, j As Integer, m As Integer, key As Integer‘读取一组正整数,按上述规则存入数组a中,代码略key = Val(Text1.Text)i = 1j = (n + 1) \ 2flag = FalseDo While i < j And Not flagm = (i + j) \ 2If key = a(m) Thenflag = TrueElseIf key < a(m) Thenj = m - 1Elsei = m + 1End IfLoopIf Not flag And j > 0 Thenm = n – iIf key = a(m) Then flag = TrueEnd IfIf flag ThenText2.Text = Str(m)ElseText2.Text = "找不到"End IfEnd Subi <= jn - j +1n – I +2Bubble sort in VB selective review26VB选考复习之冒泡排序101|排序什么是排序把无序的数据变成有序的数据的过程排序的分类升序(非减排序)降序(非增排序)对于数字:从小到大排序对于字母:按字母表顺序排序对于数字:从大到小排序对于字母:按字母表逆序排序02|冒泡排序冒泡排序冒泡排序的思想是将待排序的n个数据看作纵向排列的数据,从最下面的一个元素起,自下而上地比较相邻的两个数据元素,将较小的数据换到上面的一个元素中。重复这一过程,直到处理完最后两个元素中的数据,称之为一遍加工。然后对剩下的n-1个元素重复上述处理过程,直到最后余下两个数据的比较和交换。从底端开始,把较小的数据逐步向上推移的过程02|冒泡排序请对表中数据进行升序排序数组 d(1) d(2) d(3) d(4) d(5)原数据 8 4 9 2 5第1遍第1次第1遍第2次第1遍第3次第1遍第4次第2遍第1次第2遍第2次第2遍第3次8 4 9 2 58 4 2 9 58 2 4 9 52 8 4 9 52 8 4 5 92 8 4 5 92 4 8 5 902|冒泡排序请对表中数据进行升序排序数组 d(1) d(2) d(3) d(4) d(5)第2遍第1次第2遍第2次第2遍第3次第3遍第1次第3遍第2次第4遍第1次2 8 4 5 92 8 4 5 92 4 8 5 92 4 8 5 92 4 5 8 92 4 5 8 902|冒泡排序问题1:有n个数据组成的数列,如果使用冒泡法进行排序,保证一定能完成排序,共需进行___________遍加工?问题2:共需进行________________次数据的比较?n-1n(n-1)/2只要元素个数确定,加工遍数和比较次数就是确定的但交换次数不一定5个数据排序需要______遍?共比较了_____次?41002|冒泡排序请对表中数据进行升序排序数组 d(1) d(2) d(3) d(4) d(5) d(6) d(7)原数据 15 26 18 9 11 5 17第1遍结束第2遍结束第3遍结束第4遍结束第5遍结束第6遍结束5 15 26 18 9 11 175 9 15 26 18 11 175 9 11 15 26 18 175 9 11 15 17 26 185 9 11 15 17 18 265 9 11 15 17 18 2602|冒泡排序冒泡排序·剖析排序比较交换If语句升序:后一个元素比前一个元素小执行交换赋值语句利用一个中间变量temp执行次数循环结构保证完成排序For i=__________________Next i02|冒泡排序冒泡排序·代码(升序)For j=__________________Next jtemp=d(j)d(j)=d(j-1)d(j-1)=tempd(j)If ____________________ ThenEnd Ifn to 2 step -1①两数交换②当后者比前者小时交换③每一轮比较次数的控制④处理的轮数的控制1 to n-1n to i+1 step -102|冒泡排序冒泡排序·代码(升序)For i = 1 To n-1For j = n To i+1 Step -1If d(j) < d(j - 1) Thentemp = d(j)d(j) = d(j - 1)d(j - 1) = tempEnd IfNext jNext i交换IF语句内循环外循环①赋值语句:完成数据的交换②If语句:控制数据的比较③内循环:控制排序的数据比较次数④外循环:控制排序处理的轮数02|冒泡排序冒泡排序·代码(降序)?For i = 1 To n-1For j = n To i+1 Step -1If _______________Thentemp = d(j)d(j) = d(j - 1)d(j - 1) = tempEnd IfNext jNext i交换IF语句内循环外循环①赋值语句:完成数据的交换②If语句:控制数据的比较③内循环:控制排序的数据比较次数④外循环:控制排序处理的轮数d(j) < d(j - 1)d(j) > d(j - 1)比较次数和交换次数的统计For i = 1 To n-1For j = n To i+1 Step -1If d(j) > d(j - 1) Thentemp = d(j)d(j) = d(j - 1)d(j - 1) = tempEnd IfNext jNext i03|冒泡排序算法程序实现问题1:交换发生在哪里( )A.If语句中B.内循环中C.外循环中问题2:比较发生在哪里( )A.If语句中B.内循环中C.外循环中AB比较次数和交换次数的统计For i = 1 To n-1For j = n To i+1 Step -1If d(j) > d(j - 1) Thentemp = d(j)d(j) = d(j - 1)d(j - 1) = tempb=b+1End Ifa=a+1Next jNext i03|冒泡排序算法程序实现a:比较次数(内循环)b:交换次数(If语句)c:处理轮数(外循环)04|冒泡排序算法程序变式冒泡排序(下沉)d(1)d(2)d(3)d(4)d(5)8735473548354783457834578jjjjjjj第1轮处理:d(j)中的j从1到4变化,d(j)和d(j+1)比较第2轮处理:d(j)中的j从1到3变化,d(j)和d(j+1)比较第3轮处理:d(j)中的j从1到2变化,d(j)和d(j+1)比较第4轮处理:d(j)中的j从1到1变化,d(j)和d(j+1)比较内循环j的控制冒泡排序(下沉)(升序)For i = 1 To n-1For j = 1 To n-iIf d(j) > d(j + 1) Thentemp = d(j)d(j) = d(j + 1)d(j + 1) = tempEnd IfNext jNext i交换IF语句内循环外循环①赋值语句:完成数据的交换d(j)和d(j+1)交换②If语句:d(j)和d(j+1)比较③内循环:控制排序的数据比较次数j从1到n-i④外循环:控制排序处理的轮数n-1轮04|冒泡排序算法程序变式冒泡排序(下沉)(降序)For i = 1 To n-1For j = 1 To n-iIf d(j) < d(j + 1) Thentemp = d(j)d(j) = d(j + 1)d(j + 1) = tempEnd IfNext jNext i交换IF语句内循环外循环①赋值语句:完成数据的交换d(j)和d(j+1)交换②If语句:d(j)和d(j+1)比较③内循环:控制排序的数据比较次数j从1到n-i④外循环:控制排序处理的轮数n-1轮04|冒泡排序算法程序变式05|冒泡排序实训3.有一组数为:6,2,9,8,7,4,经过一趟冒泡排序后的序列为:2,6,4,9,8,7,第二趟排序后的序列是( )A.2,6,7,4,8,9 B.2,6,4,7,8,9C.2,4,6,7,9,8 D.2,4,6,7,8,94.有以下程序段a(1)= "123": a(2)="563": a(3)= "564"a(4)="321": a(5)= "666": a(6)="44"For i= 1 To 2For j=1 To 6- iIf a(j)> a(j + 1) Then t = a(j): a(j)= a(j +1): a(j+1)=tNext jNext i运行该程序段,数组元素a(1)到a(6)的数据依次是( )A.563、564、321、666、44、123 B. 564、563、666、44、321、123C. 123、563、321、564、44、666 D. 123、321、563、44、564、666CD05|冒泡排序实训5.小华学习了冒泡排序后,想通过程序研究冒泡排序中数据交换次数。于是自己动手编写了一个研究排序中交换次数的程序,程序如下。请帮小华完善代码,实现功能。Const n = 15Dim a(1 To n) As IntegerPrivate Sub Form_Load() ‘Form_Load窗体加载事件处理过程For i = 1 To na(i) = ① ‘生成0-99之间的随机整数List1.AddItem Str(a(i))Next iEnd SubInt(Rnd*100)05|冒泡排序实训Private Sub Command1_Click()Dim c As Integerc = 0For i = 1 To ②For j =n To ③If ④ Thent = a(j): ⑤ :a(j - 1) = t⑥End IfNext jNext iLabel1.Caption = "交换次数:" & Str(c)End Sub n - 1i+1 Step -1a(j)>a(j - 1)a(j)=a(j - 1)c = c + 1 展开更多...... 收起↑ 资源预览