第26课 冒泡排序复习一 课件-浙江省2022届高三选考信息技术一轮复习(23张PPT)

文档属性

名称 第26课 冒泡排序复习一 课件-浙江省2022届高三选考信息技术一轮复习(23张PPT)
格式 pptx
文件大小 164.5KB
资源类型 教案
版本资源 浙教版(2019)
科目 信息技术(信息科技)
更新时间 2021-11-22 21:10:23

图片预览

文档简介

(共23张PPT)
VB代码:你还记得我们吗?23333。。。。
信息的概念及特征 选择排序的基本思想
你 猜mid干啥用的? 行if语句来报道!
冒泡排序的基本代码 我是谁,我在那?
冒泡排序的算法思想 你猜我猜不猜hhhhhh
多媒体携手flash,photoshop,goldwave,会声会影发来贺电
list1.clear 清屏行不行? 对分查找:返场嘉宾在这里~~~~
开学了,朋友们!
十八线女主播小应发来贺电。。。。 6666666666666
冒泡排序:让一让,让一让,我的地盘!我做主!
对分:我家中间值咋求来着? 选择排序卑微露头,溜了溜了
list1.additem 疯狂输出2333 数据库:VB大哥我也来啦!
块if:上次有个人说我瘦瘦高高来着,我看看是谁?
来个for无限循环怎么样hhhhhhhh…… Next:哼,没我你怎么循环
do:楼上for大哥冷静,电脑死机对谁都没好处!!!1
m= (i+j)\2来了来了 递归小老弟来蹭个镜头
冒泡:我!的!主!场!
temp = d(j)
d(j) = d(j - 1)
d(j - 1) = temp
Rnd 还有人记得我嘛? 没人关心开学考吗????
Int函数 :楼上rnd我罩的!都给我闪开
Fix函数:默默路过~~~~~
00|对分作业讲解
(2018.04选考真题)数组a为一组正整数,奇数在前,偶数在后。奇数与偶数已分别按升序排序。依据对分查找思想:设计一个在数组a中查找数据Key的程序。实现该功能的VB程序段如下:
i = 1: j = 10
Key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If 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 If
Loop
If 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.③、②、①
C
00|对分作业讲解
2018.11选考真题)数组a中存储的是左右交替上升的n个正整数,如下表所示:
依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正。
00|对分作业讲解
Private Sub Command1_Click()
Const n = 6
Dim a(1 To n) As Integer, flag As Boolean
Dim i As Integer, j As Integer, m As Integer, key As Integer
‘读取一组正整数,按上述规则存入数组a中,代码略
key = Val(Text1.Text)
i = 1
j = (n + 1) \ 2
flag = False
Do While i < j And Not flag
m = (i + j) \ 2
If key = a(m) Then
flag = True
ElseIf key < a(m) Then
j = m - 1
Else
i = m + 1
End If
Loop
If Not flag And j > 0 Then
m = n – i
If key = a(m) Then flag = True
End If
If flag Then
Text2.Text = Str(m)
Else
Text2.Text = "找不到"
End If
End Sub
i <= j
n - j +1
n – I +2
Bubble sort in VB selective review
26
VB选考复习之冒泡排序1
01|排序
什么是排序
把无序的数据变成有序的数据的过程
排序的分类
升序
(非减排序)
降序
(非增排序)
对于数字:从小到大排序
对于字母:按字母表顺序排序
对于数字:从大到小排序
对于字母:按字母表逆序排序
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 5
8 4 2 9 5
8 2 4 9 5
2 8 4 9 5
2 8 4 5 9
2 8 4 5 9
2 4 8 5 9
02|冒泡排序
请对表中数据进行升序排序
数组 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 9
2 8 4 5 9
2 4 8 5 9
2 4 8 5 9
2 4 5 8 9
2 4 5 8 9
02|冒泡排序
问题1:有n个数据组成的数列,如果使用冒泡法进行排序,保证一定能完成排序,共需进行___________遍加工?
问题2:共需进行________________次数据的比较?
n-1
n(n-1)/2
只要元素个数确定,加工遍数和比较次数就是确定的
但交换次数不一定
5个数据排序需要______遍?共比较了_____次?
4
10
02|冒泡排序
请对表中数据进行升序排序
数组 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 17
5 9 15 26 18 11 17
5 9 11 15 26 18 17
5 9 11 15 17 26 18
5 9 11 15 17 18 26
5 9 11 15 17 18 26
02|冒泡排序
冒泡排序·剖析
排序
比较
交换
If语句
升序:后一个元素比前一个元素小
执行交换
赋值语句
利用一个中间变量temp
执行次数
循环结构
保证完成排序
For i=__________________
Next i
02|冒泡排序
冒泡排序·代码(升序)
For j=__________________
Next j
temp=d(j)
d(j)=d(j-1)
d(j-1)=temp
d(j)If ____________________ Then
End If
n to 2 step -1
①两数交换
②当后者比前者小时交换
③每一轮比较次数的控制
④处理的轮数的控制
1 to n-1
n to i+1 step -1
02|冒泡排序
冒泡排序·代码(升序)
For i = 1 To n-1
For j = n To i+1 Step -1
If d(j) < d(j - 1) Then
temp = d(j)
d(j) = d(j - 1)
d(j - 1) = temp
End If
Next j
Next i


I
F








①赋值语句:
完成数据的交换
②If语句:
控制数据的比较
③内循环:
控制排序的数据比较次数
④外循环:
控制排序处理的轮数
02|冒泡排序
冒泡排序·代码(降序)?
For i = 1 To n-1
For j = n To i+1 Step -1
If _______________Then
temp = d(j)
d(j) = d(j - 1)
d(j - 1) = temp
End If
Next j
Next i


I
F








①赋值语句:
完成数据的交换
②If语句:
控制数据的比较
③内循环:
控制排序的数据比较次数
④外循环:
控制排序处理的轮数
d(j) < d(j - 1)
d(j) > d(j - 1)
比较次数和交换次数的统计
For i = 1 To n-1
For j = n To i+1 Step -1
If d(j) > d(j - 1) Then
temp = d(j)
d(j) = d(j - 1)
d(j - 1) = temp
End If
Next j
Next i
03|冒泡排序算法程序实现
问题1:交换发生在哪里( )
A.If语句中
B.内循环中
C.外循环中
问题2:比较发生在哪里( )
A.If语句中
B.内循环中
C.外循环中
A
B
比较次数和交换次数的统计
For i = 1 To n-1
For j = n To i+1 Step -1
If d(j) > d(j - 1) Then
temp = d(j)
d(j) = d(j - 1)
d(j - 1) = temp
b=b+1
End If
a=a+1
Next j
Next i
03|冒泡排序算法程序实现
a:比较次数(内循环)
b:交换次数(If语句)
c:处理轮数
(外循环)
04|冒泡排序算法程序变式
冒泡排序(下沉)
d(1)
d(2)
d(3)
d(4)
d(5)
8
7
3
5
4
7
3
5
4
8
3
5
4
7
8
3
4
5
7
8
3
4
5
7
8
j
j
j
j
j
j
j
第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-1
For j = 1 To n-i
If d(j) > d(j + 1) Then
temp = d(j)
d(j) = d(j + 1)
d(j + 1) = temp
End If
Next j
Next i


I
F








①赋值语句:
完成数据的交换
d(j)和d(j+1)交换
②If语句:
d(j)和d(j+1)比较
③内循环:
控制排序的数据比较次数
j从1到n-i
④外循环:
控制排序处理的轮数
n-1轮
04|冒泡排序算法程序变式
冒泡排序(下沉)(降序)
For i = 1 To n-1
For j = 1 To n-i
If d(j) < d(j + 1) Then
temp = d(j)
d(j) = d(j + 1)
d(j + 1) = temp
End If
Next j
Next i


I
F








①赋值语句:
完成数据的交换
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,9
C.2,4,6,7,9,8 D.2,4,6,7,8,9
4.有以下程序段
a(1)= "123": a(2)="563": a(3)= "564"
a(4)="321": a(5)= "666": a(6)="44"
For i= 1 To 2
For j=1 To 6- i
If a(j)> a(j + 1) Then t = a(j): a(j)= a(j +1): a(j+1)=t
Next j
Next i
运行该程序段,数组元素a(1)到a(6)的数据依次是( )
A.563、564、321、666、44、123 B. 564、563、666、44、321、123
C. 123、563、321、564、44、666 D. 123、321、563、44、564、666
C
D
05|冒泡排序实训
5.小华学习了冒泡排序后,想通过程序研究冒泡排序中数据交换次数。于是自己动手编写了一个研究排序中交换次数的程序,程序如下。请帮小华完善代码,实现功能。
Const n = 15
Dim a(1 To n) As Integer
Private Sub Form_Load() ‘Form_Load窗体加载事件处理过程
For i = 1 To n
a(i) = ① ‘生成0-99之间的随机整数
List1.AddItem Str(a(i))
Next i
End Sub
Int(Rnd*100)
05|冒泡排序实训
Private Sub Command1_Click()
Dim c As Integer
c = 0
For i = 1 To ②
For j =n To ③
If ④ Then
t = a(j): ⑤ :a(j - 1) = t

End If
Next j
Next i
Label1.Caption = "交换次数:" & Str(c)
End Sub

n - 1
i+1 Step -1
a(j)>a(j - 1)
a(j)=a(j - 1)
c = c + 1
同课章节目录