选择排序
12
13
45
75
82
89
95
选择排序
d(1) d(2) d(3) d(4) d(5) d(6) d(7)
i=3 k=3 12 i=4 k=4 12 i=5 k=5 13 13
k
45
j
75 82 89 95
45
i=1 k=1
82
12
75
13
89
95
j
45 75
k
j k
12 82 45 75 13 89 95
选择排序
选择排序(递增/非减顺序)的思想是 1、找出数组元素中最小的数据,使它与第一个元素中的 数据交换位置 2、在余下的元素中继续找最小的元素,与第二个元素中 的数据交换位置 …………………… 以此类推,直到所有的元素成为一个有序的序列
1.有6位裁判为运动员评分,给出的分数分别为49,45,61,46,58,57。采用选择排 序算法对其进行排序,若完成第一遍时的结果为45,49,61,46,58,57,则完成第二遍 时的结果是( ) A.45,61,49,46,58,57 B.45,58,57,49,61,46 C.45,46,61,49,58,57 D.45,58,49,46,61,57 2.有6位裁判为运动员评分,给出的分数分别为49,45,61,46,58,57。采用选择 排序算法对其进行排序,若完成第一遍时的结果为61,45,49,46,58,57,则完成 第二遍时的结果是( ) A.61,45,49,46,58,57 B.61,58,57,49,45,46 C.61,58,57,46,45,49 D.61,58,49,46,45,57 3.某校有5位学生参加学生会主席竞选,得票数依次为110,98,3,150,67。使用 选择排序的方法对得票数进行从大到小的排序,需要进行数据互换的次数是( ) A.5 B.4 C.3 D.2
ki,ji+1 j<=n
Y
结束
i<>k?N来自d(j)<d(k)? kj jj+1
Y
For j=i+1 to n if d(j)<d(k) then k=j next j If i<>k then t=d(k) d(k)=d(i) d(i)=t
next i
ii+1
d(1) d(2) d(3) d(4) d(5) d(6) d(7)
选择排序降序排序:12 4 45 20 17 15 13 3 第一遍:3 4 45 20 17 15 13 12
第二遍:3 4 45 20 17 15 13 12 第三遍:3 4 12 13 17 15 20 45 第四遍:3 4 12 13 17 15 20 45 第五遍:3 4 12 13 15 17 20 45 第六遍:3 4 12 13 15 17 20 45 第七遍:3 4 12 13 15 17 20 45
开始 找到最小数 与第一个数互换 找到最小数 找到最小数 四 次 交换数据 开始
与第二个数互换 ……
结束 图2
结束 图3
i:记录正在进行的处理遍数 k:记录d(i)到d(n)的最小数
开始
i 1 i<=n-1?
输出已排 序的数组d 寻找d(i)到d(n)的最小数d(k)
结束
i<>k?
互换d(i)到d(k)的值
ii+1
图5
ki,ji+1
Y
j<=n
N
Y
d(j)<d(k)?
N
kj
jj+1
min=a(1) For i=2 to n if d(i)<min then min=d(i) exit i
图6
图7
开始
i 1 i<=n-1?
Y
N 输出已排序 的数组d N Y 互换d(i)到d(k)的值
For i=1 to n-1 k=i j=i+1
82
89
95
j
12 13 45 75 82
k
89
95
i=2 k=2
j k k
i=6 k=6
j
k
12 13 45 75 82 89 95