课件17张PPT。——VB排序方法之一选择排序练习一完善程序语句:要求找出下面5个数中的最小值的位置,将其所在位置显示在Label1中。
Dim a(1 To 5) As Integer, k As Integer, j As Integer
a(1) = 108: a(2) = 120: a(3) = 75: a(4) = 96: a(5) = 48
k =
For j =
If Then k = j
Next j
Label1.Caption = "最小数的位置是第" + + "个"12 to 5a(j) < a(k)Str(k)练习二现要将最小值排到数组的第1个位置,尝试在后面写出需要添加的语句。
Dim a(1 To 5) As Integer, k As Integer, j As Integer
a(1) = 108: a(2) = 120: a(3) = 75: a(4) = 96: a(5) = 48
k = 1
For j = 2 to 5
If a(j) < a(k) Then k = j
Next j
Label1.Caption = "最小数的位置是第" + str(k) + "个"‘从上述程序可知,最小值的位置是第k个,因此只要k不是1,就要执行a(k)与a(1)的交换。
If k<>1 then t=a(1) : a(1)=a(k) : a(k)=t实例一现要对这5个数(108、120、75、96、48)从小到大排序:
第2次 2 3 2<>3 交换第3次 3 4 3<>4 交换第4次 4 5 4<>5 交换实例二现要对这5个数(48、120、96、75、108)从小到大排序:
第4次 4 5 4<>5 交换第3次 3 3 3<>3 不交换第2次 2 4 2<>4 交换1 1=1 不交换结论如果 ,那么需要交换。
要对5个数进行从小到大排序,需要找
次最小值(遍历),数据比较
次,数据交换最多 次,最少交换 次。
k <> i41040选择排序从参与排序的所有元素中找出最大(或最小)元素的位置,与第一个元素的数据相互交换位置。(第1遍加工)
在余下元素中,找出最大(或最小)元素的位置,与第二个元素的数据相互交换位置。(第2遍加工)
以此类推……
直至所有元素成为有序序列。思考
查看学案练习一上的找第1个最小值的方法。那么找第2个最小值的程序应该如何改?
a(1) = 108: a(2) = 120: a(3) = 75
a(4) = 96: a(5) = 48
k =
For j =
If a(j) < a(k) Then k = j
Next j12 to 523 to 5第一遍加工:
k = 1
For j = 2 to 5
If a(j) < a(k) Then k = j
Next j每一遍加工时找最小值位置(下标)的程序实现:
a(1) = 108: a(2) = 120 :a(3) = 75:a(4) = 96: a(5) = 48
第二遍加工:
k = 2
For j = 3 to 5
If a(j) < a(k) Then k = j
Next j第三遍加工:
k = 3
For j = 4 to 5
If a(j) < a(k) Then k = j
Next j第四遍加工:
k = 4
For j = 5 to 5
If a(j) < a(k) Then k = j
Next j每一遍加工时如何找最大(或最小)值?程序代码实现完善下列语句,实现对5个数从小到大排序。
For i = 1 To ‘i表示加工次数
k =
For j =
If Then k = j ‘找到最小值的位置(下标)
Next j
If Then
t = a(i) : : a(k) = t
End If
Next I
如何实现5个数据从大到小排序?
如果是n个数据排序呢?
4ii+1 to 5a(j) < a(k)k <> ia(i) = a(k)a(j) > a(k)n - 1i+1 to n练习巩固1、超市面食区共有5种面食品种,其价格依次为6,4,5,2,3,若采用选择排序算法对其进行从小到大排序,则第二遍的排序结果是( )
A.2,3,5,6,4
B.2,4,5,6,3
C.2,3,6,4,5
D.2,6,4,5,3
练习巩固2、某校有5位学生参加学生会主席竞选,得票数依次为35,3,13,43,7。使用选择排序的方法对得票数进行从大到小排序,需要进行数据互换的次数是( )
A.5 B.4
C.3 D.2
练习巩固3、实现某排序算法的部分VB程序如下:
For i = 1 To 6
k = i
For j = i + 1 To 7
If a(j) < a(k) Then k = j
Next j
If k < > i Then
t = a(i): a(i) = a(k): a(k) = t
End If
Next i
在排序过程中,经过某一遍排序“加工”后,数组元素a(1)到a(7)的数据依次为“10,41,75,12,63,11,85”,则下一遍排序“加工”后数组元素a(1)到a(7)的数据依次是( )练习巩固4、有如下VB程序段:
s = ""
For i = 1 To 3
k = i
For j = i + 1 To 7
If a(j) > a(k) Then k = j
Next j
If k < > i Then
t = a(i): a(i) = a(k): a(k) = t
End If
s = s + Str(a(i))
Next i
Text1.Text = s
数组元素a(1)到a(7)的数据依次是“3,9,1,5,8,6,2”,经过程序段加工后,文本框Text1中显示的内容是( )练习巩固5、下列VB程序运行时,单击按钮Command1后,语句①被执行了 次,
文本框Text1中显示的内容是 。
Private Sub Command1_Click()
Dim d(1 To 4) As Integer
Label1.Caption = ""
d(1) = 45: d(2) = 23: d(3) = 64: d(4) = 108
For i = 1 To 3
k = i
For j = i + 1 To 4
If d(j) < d(k) Then k = j '语句①
Next j
If k < > i Then
t = d(i): d(i) = d(k): d(k) = t
End If
Next i
For i = 1 To 4
Text1.Text = Text1.Text + Str(d(i)) + ""
Next i
End Sub练习巩固6、某校高一年级要将期末考试成绩进行一个排名,需要对所有分数从高到低进行排序。以下为用于排序的部分代码,其中变量n为学生总数,数组cj存储各科总分,数组xm存储对应学生的姓名。请阅读以下代码,将画线部分补充完整。
Dim cj(1 To 500) As Integer
Dim xm(1 To 500) As String
Const n = 500
?
Function max(a As Integer) As Integer
Dim k As Integer, j As Integer
k = a
For j = a + 1 To n
If Then k = j
Next j
max = k
End Function总结理解选择排序的原理
掌握选择排序的代码编写
作业:
《算法作业本》4.5和4.6节