浙教版信息技术选修1 2.3 排序——冒泡排序 学案

文档属性

名称 浙教版信息技术选修1 2.3 排序——冒泡排序 学案
格式 docx
文件大小 683.8KB
资源类型 教案
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2021-01-12 14:37:39

图片预览

文档简介

“用循环的思想解决问题—冒泡排序”
【学习目标】
1 熟练掌握for循环嵌套
2 理解冒泡排序的思想
3 学会用程序实现排序算法
【重点】用循环嵌套的思想解决问题
【难点】冒泡排序的算法
回顾上节课所学的循环案例
(1)、Sum=1!+2!+3!…+i!…+n!
3用递归函数实现
For i=1 to n
s=s+f(i)
Next i
递归函数function 函数名(变量as类型)as类型
Function f(n As Integer) As Integer
If n = 0 Then
f = 1
Else
f = n * f(n - 1)
End If
End Function (2)打印字符图形

循环思想在冒泡中的应用
6.8 89 16.8 72.8 120 17.2 63 9.8
1在这些数据中,先找出最大值
2在剩余的数中,在找出最大值
3重复2,一直到剩下一个数,即完成了排序
——如何求n个数最大值?
a(1) a(2) a(3) a(4) ……a(n)
首先a(1) a(2)比较,最大值存放在a(2)中
然后a(2)a(3),比较,最大值放在a(3)中
以此类推,一直到a(n-1)和a(n)比较,最大值放在a(n)中
推论:利用a(i)>a(i+1)为判断条件,当条件成立,两个数交换值,否则进行下一轮比较 如下图所示:
课堂实践1
8名学生分别代表a(1)……a(8),分别存储
6.8 89 16.8 72.8 120 17.2 63 9.8
以其他学生为导演,展示两两相比,交换的过程,如图
研究第i轮时:
总结冒泡排序的思路:
课堂实践2:完善“冒泡”程序,调试并运行
附 参考代码:
Private Sub Command1_Click() '选择排序——从小到大排序
Text1.Text = ""
Text2.Text = ""
Dim i, j As Integer
Dim t, a(1 To 100) As Single '定义数组,相当于定义a(1) a(2)……a(10)
n = InputBox("请输入n的值", "输入n", "")

For i = 1 To n Step 1
a(i) = InputBox("请输入第" & i & "个数字", "标题_输入数据", "") '输入数据到数组中
Next i
For i = 1 To n
Text1.Text = Text1.Text & a(i) & " " '把输入的数据串起来,在text1.text输出
Next i
'冒泡排序
For i = 1 To n-1
For j = 1 To n - i
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
'输出数据
For i = 1 To n
Text2.Text = Text2.Text & a(i) & " " '把输入的数据串起来,在text1.text输出
Next i
End Sub
三、参考资料
1.Dim 变量名 as 变量类型
(integer、long、single、double、string、boolean、date)
如:dim x as ingeger 定义整形的变量x
Dim x,y,z as double 定义双精度实数变量 x y z
2.If 条件 then 语句1 else 语句2
If 条件 then
语句1
语句2
……
语句n
Endif
1、 If 条件表达式 then 语句1 else 语句2
Then
条件?
Step1
2、If 条件表达式 then 语句
Else
Then
条件?
Step2
Step1
1
2
3例如:求两个数的最大值(设定 a b max 三个single 类型的变量)
N
Y
开始
结束
输入a、b
a>b?
Max=b
Max=a
输出max
4★★★ For i=初始值 to 终点值 step 步长
黑箱子
Next i
开始
结束
N
Y
表达式
执行循环体中的语句块
循环变量i初始值 向 终点值 进军 ,每一步走 一个步长
For i=1 to 100 step 1(可以省略)
黑箱子
Next i
For i=100 to 19 step -10
黑箱子
Next i
5、Do while 条件表达式
语句块
Loop
6.★★★
Dim s(1 To 8) As String '定义字符串数组s(1)、s(2)……s(8),8个变量
★★★
New_password=””
new_password = new_password + s(i) '把新字符串到新密码上
new_password = new_password + s(i)