选择排序之算法实现PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将最小值与第i个数据a(i)交换位置 Next i
Temp = a(i) a(i) = a(Min) a(Min) = Temp
CHENLI
10
一、随机生成10个整数, 请用选择法对其进行排序。
Private Sub Command1_Click()
Dim a(1 To 10) As Integer Dim i As Integer, j As Integer, k As Integer ‘k变量代表是找到的最小数 Print "排序以前的数:"
选择法排序
之算法实现
CHENLI
1
选择排序的过程:
对比数组中前一个元素跟后一个元素的大小,如果后面的元素比 前面的元素小则用一个变量k来记住他的位置,接着第二次比较, 前面“后一个元素”现变成了“前一个元素”,继续跟他的“后 一个元素”进行比较如果后面的元素比他要小则用变量k记住它在 数组中的位置(下标),等到循环结束的时候,我们应该找到了最 小的那个数的下标了,然后进行判断,如果这个元素的下标不是 第一个元素的下标,就让第一个元素跟他交换一下值,这样就找 到整个数组中最小的数了。然后找到数组中第二小的数,让他跟 数组中第二个元素交换一下值,以此类推。
第1步:找出n个数据( a(1)至a(n) )中的 最小数,并与第1个数据a(1)交 换位置;
第i步: 在剩下的n-i+1个数据(a(i)至a(n))
中找出最小数,并与第 i 个数据
i = 1 a(i)交换位置;
~ ? n-1
CHENLI
8
选择法排序的基本算法
For i = 1 To n-1 ’n代表的是数组里面数据的总数 找出a(i)至a(n)中的最小值
Dim a(1 To 10) As Integer
Dim i, j, min, max As Integer
首先产生10个3位整数的随机数在标签中显示。 双击窗体,在Load事件中写入如下代码:
Private Sub Form_Load() Label1.Caption = "" Randomize For i = 1 To 10 a(i) = Int(Rnd * 101 + 100) Label1.Caption = Label1.Caption & a(i) & " " Next i End Sub
将最小值与第i个数据a(i)交换位置
Next i
Min = i ‘min变量代表是找到的最小数 For j = i + 1 To n ‘j变量代表的当前处理的数组下标
If a(Min) > a(j) Then Min = j
Next j
CHENLI
9
选择法排序的基本算法
For i = 1 To n-1 找出a(i)至a(n)中的最小值
答案:C
CHENLI
6
选择法排序
对包含n个数据的数组按从小到大排列
第1步:找出n个数据( a(1)至a(n) )中的 最小数,并与第1个数据a(1)交 换位置;
第2步:在剩下的n-1个数据(a(2)至a(n)) 中找出最小数,并与第2个数据 a(2)交换位置;
CHENLI
7
选择法排序
对包含n个数据的数组按从小到大排列Βιβλιοθήκη For i = 1 To 10
a(i) = Int(100 * Rnd)
Print a(i);
Next i
Print
For i = 1 To 9
‘For i=1 to 9是因为数组a只包含10个元素,按选择排序的要求,需要将数组前9个元素分别与后面的元素(从 i+1起,直到10为止)比较大小
k = i ‘k=i的作用为把a(i)视为最小元素,记录a(i)的数组下标
For i = 1 To 10
Print a(i);
Next I Print
CHENLI
11
End Sub
三、打开VB6.0,新建一个工程,在窗体中添加两个命令按钮,caption分别 改为“升序排列”和“降序排列”,添加两个个标签控件。
CHENLI
12
在通用声明对话框对数组进行定义,使其成为窗体级变量:
1
2
3
4
5
6
最小者 25
i=5
08
16
21
25*
25
49 无交换
结果
08
16
21
25*
25
49
各趟排序后的结果
CHENLI
4
1、在选择排序过程中,经过一遍排序“加工”后,数组元素 a(l)到a(7)的数据依次为“10,41,75,12,63,11,85”。则下 一遍排序“加工”后数组元素a(l)到a(7)的数据依次是 A. 10, 11, 41, 75, 12, 63, 85 B. 10, 11, 75, 12, 63, 41, 85 C. 10, 11, 12, 75, 63, 41, 85 D. 10, 11, 12, 41, 63, 75, 85
CHENLI
2
初始
21
25
49
25*
16
08
1
2
3
4
5
6
最小者 08
i = 1 21
25
49
25*
16
交换21,08
08
最小者 16
i=2
08
25
49
25*
16
交换25,16
21
最小者 21
i=3
08
16
49
25*
25
21 交换49,21
CHENLI
3
最小者 25*
i=4
08
16
21
25*
25
49 无交换
答案:B
CHENLI
5
2、选择排序:在经过一遍排序“加工”后,数组元素a(1)到a(5) 的数据依次为“28,70, 57, 53,30”。则 下一遍排序“加工” 后数组元素a(1)到a(5)的数据应该是
A. 28, 30,70,53,57 B. 28, 30,53,57,70 C. 28,30,57,53,70 D. 28, 30,53,70, 57
CHENLI
13
双击“升序排列”命令按钮,进入代码编辑窗口,输入如下代码:
Private Sub Command1_Click()
For i = 1 To 9
Min = a(i)
For j = i + 1 To 10
If Min > a(j) Then
For j = i + 1 To 10
If a(k) > a(j) Then k = j ‘k=j的作用为当a(j)比a(k)小时,记录a(j)的数组下标,k=j记录的是每一轮选择
排序过程的最小值的数组下标。
End If
Next j
t = a(i): a(i) = a(k): a(k) = t
Next i Print "排序以后的数:"
相关文档
最新文档