首页
高中语文
高中数学
高中英语
高中物理
高中化学
高中历史
高中道德与法治(政治)
高中地理
高中生物
高中音乐
高中美术
高中体育
高中信息技术
高中通用技术
资源详情
高中信息技术
浙教版
选修1 算法与程序设计
第五章 算法实例的程序实现
5.3 排序算法的程序实现
2022届高三信息技术一轮复习浙教版选修 5.3 排序算法的程序实现(冒泡排序 )课件-(30张PPT)
文档属性
名称
2022届高三信息技术一轮复习浙教版选修 5.3 排序算法的程序实现(冒泡排序 )课件-(30张PPT)
格式
pptx
文件大小
359.4KB
资源类型
教案
版本资源
浙教版
科目
信息技术(信息科技)
更新时间
2021-10-26 13:48:57
点击下载
图片预览
1
2
3
4
5
6
7
8
9
10
11
12
文档简介
(共30张PPT)
冒泡排序专题复习
冒泡排序的思想
从最下面一个元素起,依次比较相邻的两个元素中的数据,将较小的数据调换到上面,小元素像气泡一样上浮。
如何实现将较小数逐次从下向上推移呢?
冒泡排序的过程
1 2 3 4 5
设置数组变量:a(i)为牌的值(i=1、2、3、4、5)
第一轮冒泡
1 2 3 4 5
a(5)>a(4),
不交换
a(4)
交换
a(3)
a(2)
第二轮冒泡
1 2 3 4 5
a(5)>a(4),
不交换
a(4)>a(3),
不交换
a(3)
第三轮冒泡
1 2 3 4 5
a(5)>a(4),
交换
a(4)
不换
第四轮冒泡
1 2 3 4 5
a(5)
交换
分析与总结
如果要对有5个元素的数组进行排序,那么
1、要进行______轮冒泡
2、第一轮冒泡,比较的范围从 到 ;
第二轮冒泡,比较的范围从 到 ;
第三轮冒泡,比较的范围从 到 ;
第四轮冒泡,比较的范围从 到 。
3、总比较次数 次,数据最多交换 次。
4
a(5)与a(4)
a(2)与a(1)
a(5)与a(4)
a(5)与a(4)
a(5)与a(4)
a(3)与a(2)
a(4)与a(3)
a(5)与a(4)
10
10
提高
如果要对有n个元素的数组进行排序,那么
1、要进行______轮冒泡
2、第一轮冒泡,比较的范围从 到 ;
第二轮冒泡,比较的范围从 到 ;
第三轮冒泡,比较的范围从 到 ;
……
第n-1轮冒泡,比较的范围从 到 。
3、总比较次数 次,数据最多交换 次。
a(2)与a(1)
a(3)与a(2)
n-1
a(n)与a(n-1)
a(n)与a(n-1)
a(n)与a(n-1)
a(n)与a(n-1)
a(n)与a(n-1)
a(4)与a(3)
n(n-1)/2
n(n-1)/2
冒泡排序程序实现
For i= 1 to n-1
For j= n to i+1 step -1
If a(j)
t=a(j):a(j)=a(j-1):a(j-1)=t
End if
Next j
Next i
’外层循环控制冒泡轮数
’注意j的初值和终值
’满足条件,两数交换
1.用冒泡排序算法对一组学生的身高数据进行升序排序,已知第一遍排序结束后的数据序列为165,168,178,175,171,则下列选项中不可能是原始数据序列的是
A.165,178,175,168,171
B.178,165,168,171,175
C.168,178,175,165,171
D.168,178,175,171,165
B
思考:
若要把数列排成降序数列,程序如何修改?
For i = 1 To n - 1
For j = n To i + 1 Step -1
If Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
Next i
a(j)>a(j-1)
思考:
若从前往后实现大值“下沉”,程序如何修改?
For i = 1 To n - 1
For j =
If a(j) < a(j - 1) Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
Next i
2 to n-i+1
思考:
若从前往后实现大值“下沉”,程序如何修改?
For i = n To 2 step -1
For j =
If a(j) < a(j - 1) Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
Next i
2 to i
思考:
若把每一遍加工时数据比较位置改为j和j+1,程序如何修改?
For i = 1 To n - 1
For j =
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
n-1 To i Step -1
思考:
若只需要寻找数组中最大的三个数,程序如何修改?
For i =
For j = n To i + 1 Step -1
If Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
List1.AddItem Str(a(i))
Next i
a(j)>a(j-1)
1 to 3
a(j-1)
思考:
若只需要将数组x到y位置的元素进行排序(1<=x<=y<=n),程序如何修改?(考虑排序不同方向)
For i = 1 to y-x
For j = x+1 to y-i+1
If a(j) < a(j - 1) Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
Next i
y to x+i step -1
2.有如下VB程序段:
For i = 1 To 2
For j = 5 To i + 1 Step -1
If a(j) < a(j-1) Then
t = a(j): a(j) = a(j-1): a(j-1) = t
End If
Next j
Next i
数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为
A.16,24,33,45,77
B.16,24,45,33,77 C.77,24,45,16,33
D.77,45,33,24,16
A
3.有如下VB程序段:
Dim a(1 To 6) As Integer
For i = 1 To 6
a(i) = Int(Rnd * 45) * 2 + 10
Next i
For i = 1 To 2
For j = 2 To 6 - i
If a(j) \ 10 > a(j - 1) \ 10 Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
Next i
执行完该程序段后,下列选项中,a(1)到a(6)各元素的值可能是
A.84,98,93,84,62,30
B.70,60,10,28,18,14 C.34,44,36,14,16,94
D.77,42,34,16,24,82
C
总结
IF语句条件表达式即为排序的条件,按照什么内容(关键字)排序,排成什么状态(升序或者降序)。
内层循环:循环变量范围控制参与排序元素的范围,全部参与还是部分参与,步长控制数据比较的方向,前面先有序还是后面先有序。
外层循环:循环变量范围控制冒泡的个数,完全冒泡还是部分冒泡。
程序优化:
n个数不一定需要冒n-1个泡才完全有序,比如数组“3,5,7,9,11,2”冒一个泡后就实现了完全有序。如何实现一旦发现数组数据已经有序程序就不再进行排序,从而提高程序效率?
思考:如何判断一个数组数据已经有序了?
flag = False: i = 1
Do While i
flag = True
For j = n To i + 1 Step -1
If a(j) < a(j - 1) Then
t = a(j)
a(j) = a(j - 1)
a(j - 1) = t
flag = False
End If
Next j
i = i + 1
Loop
某一轮冒泡过程没有发生数据交换,则说明数组有序
4.有以下VB程序:
flag = True : i = 1: n = 6
Do While i<= n - 1 and flag = True
flag = False
For j = n To i + 1 Step -1
If a(j) < a(j - 1) Then
t = a(j)
a(j) = a(j - 1)
a(j - 1) = t
flag = True
End If
Next j
i = i + 1
Loop
有一数组a(1 to 6),其数值分别为“45,39,78,37,93,64”,想要按照从小到大排序,执行完该程序段后,数据总比较次数和总交换次数分别是
A.9次和4次
B.9次和6次
C.12次和6次
D.15次和12次
C
程序变式一:
数组a(1 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 4 5 6 8 9 9 10 15
排序后:
For i = 1 To n \ 2
For j = n - i + 1 To i + 1 Step -1
If a(j) < a(j - 1) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t
Next j
For j = i + 2 To n - i + 1 Step 1
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 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 4 5 6 8 9 9 10 15
排序后:
For i = 1 To n \ 2
For j = i + 1 To n – i + 1 Step 1
If a(j) < a(j - 1) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t
Next j
For j = n - i To i + 1 Step -1
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 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 4 6 9 10 15 9 8 5
排序后:
For i = 1 To n \ 2
For j = n - i + 1 To i + 1 Step -1
If a(j) < a(j - 1) Then t = a(j): a(j) = a(j - 1): a(j - 1) = t
Next j
For j = i + 1 To n - i
If a(j+1) >a(j) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t
Next j
Next i
程序变式二:
数组a(1 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 4 15 5 10 6 9 8 9
排序后:
k = 1
For i = 1 To n - 1
For j = n To i + 1 Step -1
If a(j)*k < a(j - 1)*k Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
k = - k
Next i
变式扩展:
数组a(1 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 15 4 10 5 9 6 9 8
排序后:
k = 1
For i = 1 To n - 1
For j = n To i + 1 Step -1
If a(j)*k > a(j - 1)*k Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
End If
Next j
k = - k
Next i
程序变式三:
数组a(1 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 8 4 9 5 10 6 15 9
排序后:
For i = 1 To (n – 1)\2
For j = 1 To n - 2 * i
If a(j) > a(j + 2) Then
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
Next j
Next i
变式扩展:
数组a(1 to 8) 10 5 8 6 9 4 15 9
原序列:
数组a(1 to 8) 15 4 10 5 9 6 8 9
排序后:
k = 1
For i = 1 To (n -1)\2
For j = 1 To n - 2 * i
If a(j) * k < a(j + 2) * k Then
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
k = - k
Next j
Next i
5.有如下VB程序段:
k = 1
For i = 1 To 2
For j = 1 To 6 - 2 * i
If k * a(j) < k * a(j + 2) Then
t = a(j): a(j) = a(j + 2): a(j) = t
End If
k = -k
Next j
Next i
数组元素a(1 to 6)的初始 数值分别为“15,11,58,38,26,9”,执行完该程序段后,数据a元素的值分别是
A.58,9,26,11,15,38
B.58,38,26,11,15,9
C.15,38,26,11,58,9
D.58,38,26,15,11,9
A
点击下载
同课章节目录
第一章 算法和算法的表示
1.1 使用计算机解决问题的一般过程
1.2 确定解决问题的方法
1.3 把解决问题的方法步骤化
1.4 算法的概念和表示方法
第二章 算法实例
2.1 枚举算法
2.2 解析算法
2.3 排序
2.4 查找
第三章 面向对象程序设计的基本知识
3.1 面向对象程序设计方法简介
3.2 在可视化的程序设计环境VB中建立一个应用程序
第四章 VB程序设计初步
4.1 基本数据类型、常量、变量
4.2 基本运算和表达式
4.3 语句
4.4 过程和函数
第五章 算法实例的程序实现
5.1 枚举算法的程序实现
5.2 解析算法的程序实现
5.3 排序算法的程序实现
5.4 查找算法的程序实现
5.5 递归算法实例及程序实现
非试题类资料
点击下载
VIP下载