内容正文:
第17课
选择排序轻松做
桌上有4个盒子,分别以 1、2、3、4 编号,每个盒子里装有一张圆形卡片,卡片上写着4位同学一分钟的跳绳次数。请依据这些卡片上的数,把它们从小到大排序。
2
3
4
100
50
120
1
140
1
2
3
4
100
50
120
140
第1步:在 号盒子到 号盒子里选择 ,与 号盒子进行交换。交换后的顺序是____________________。
第2步:在 号盒子到 号盒子里选择 ,与 号盒子进行交换。交换后的顺序是____________________。
第3步:在 号盒子到 号盒子里选择 ,与 号盒子进行交换。交换后的顺序是____________________。
1 4 最小数 1
2 4 最小数 2
3 4 最小数 3
那么你是通过什么方法找到最小数的呢?
(50 140 100 120 )
(50 100 140 120 )
(50 100 120 140 )
初始状态
36
67
10
79
25
第1轮
第2轮
第3轮
第4轮
110
运用选择排序算法,完成颠球比赛个数从小到大的排序,填写每轮排序结果。
10 67 36 79 25
10 25 36 79 67
10 25 36 79 53
10 25 36 53 79
比较次数
4次
3次
2次
1次
探究数据量与算法执行次数的关系?
观察选择排序的规律,填写学习任务单。
颠球比赛这组数中一共有____个数,经过了_____轮比较,每轮比较次数依次为____、____、____、_____。
总结:如果有n个数进行选择排序,需要经过_____轮比较,每轮比较次数越来越___。
5 4
4 3 2 1
n-1
少
补全选择排序流程图
与未排序的第一个数交换
在未排序中找到最小数
①
②
data=[64,25,12,22,11,90,88,77,55,33]
n=len(data)
i=0 #将当前的待排序位置设为0
while i<n-1:
min=i #将最小值标记为当前位置
j=i+1 #要比较的位置为当前的下一位
while j<n: #每一轮要比较的次数为n-j次
if data[j]<data[min]: #如果比较位置的值小于当前标记位置的值
min=j #将最小值标记点更换为j
j=j+1
if min!=i:#经过一轮比较结束之后,如果最小值不在指定位置就交换
data[i],data[min]=data[min],data[i]
i=i+1
print("第",i,"轮排序结果是",data)
实心球(米):8.2、4.3、9.1、12、6.8、5.4、7.7、8.5、11.2、4.3
跳高(厘米):70、75、60、100、80、85、95、90、65、55
投篮(个):21、10、3、5、22、8、14、18、13、8
百米跑(秒):21、13、14、12、19、18、16、15、17、20
立定跳远(厘米):120、145、166、100、173、117、132、178、162、124
立定跳远
实心球
跳高
投篮
百米跑
抽一抽——排一排
$