内容正文:
4.3.2 选择排序
和冒泡排序
扑 克 牌 排 序
有5张乱序的扑克牌,如果想按照从小到大的顺序把它们排好,你会怎么做?
2
扑 克 牌 排 序
初始:5, 8,2,10,7
1、先找出最小的一张牌—>2,放在第一个位置,5和2互换,—>2 8 5 10 7
2、再找出第二小的牌—>5,放在第二个位置,8和5互换,—>2 5 8 10 7
3、第三大的牌—>7,放在第三个位置,8和7互换,—>2 5 7 10 8
4、第四大的牌—>8,放在第四个位置,10和8互换,—>2 5 7 8 10
3
一
选择排序
选择排序的思想:第一趟,假设第一个数最小,然后找出后面最小的数与其互换位置,以此类推。
实例:将序列9、1 、5 、8 、3、7 、4 、6和2,按升序排列
4
一
选择排序
(最多需要n-1趟)
5
课 堂 小 练
练习1
1、使用选择排序对数列 29, 10, 14, 37, 13 进行升序排列。完成第一轮后,数组的状态是( )
A. 10, 29, 14, 37, 13
B. 10, 14, 29, 37, 13
C. 13, 10, 14, 37, 29
D. 10, 29, 14, 13, 37
A
解析:
第一轮:假设第一个数29最小,实际10最小,所以29和10互换
得到:10 29 14 37 13
6
还是用这5张乱序的扑克牌:5, 8,2,10,7。现在,用另一种方法来给它们排序,这种方法叫做“冒泡排序”。它的规则:从左到右,依次比较相邻的两张牌,如果左边的牌比右边的大,就交换它们的位置。
二
冒泡排序
7
二
冒泡排序
8 、7比较,换—>2 5 7 8 10
初始:5 8 2 10 7
第一趟:
5 、8比较,不换—>5 8 2 10 7
第二趟:
5 、2比较,换—>2 5 8 7 10
8 、2 比较,换—>5 2 8 10 7
8 、10比较,不换—>5 2 8 10 7
10 、7比较,换—>5 2 8 7 10
5 、8比较,不换—>2 5 8 7 10
8 、10比较,不换—>2 5 7 8 10
第三趟:
2、5比较,不换—>2 5 7 8 10
5、7比较,不换—>2 5 7 8 10
(无交换,排序结束)
8
二
冒泡排序
冒泡排序的思想:从左往右两两比较,如果前者大则交换,第一趟结果找到最大值在最后。
实例:用冒泡排序法将序列9、1 、5 、8 、3、7 、4 、6和2,按升序排列
9
二
冒泡排序
(最多需要n-1趟)
10
课 堂 小 练
练习2
1、使用冒泡排序对数列 29, 10, 14, 37, 13 进行升序排列。完成第一轮后,数组的状态是( )
A. 10, 29, 14, 37, 13
B. 10, 14, 29, 13, 37
C. 13, 10, 14, 37, 29
D. 10, 29, 14, 13, 37
B
解析:
初始:29, 10, 14, 37, 13
比较 29,10 → 交换 → 10, 29, 14, 37, 13
比较 29,14 → 交换 → 10, 14, 29, 37, 13
比较 29,37 → 不换 → 10, 14, 29, 37, 13
比较 37,13 → 交换 → 10, 14, 29, 13, 37
11
$