信息技术公开课选择排序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

23 23 23 23
d (1)
冒泡排序程序代码:
i 记录正在处理的遍数;
j 记录当前数组元素的下标 n=3 i j
d (2) d (3)
5 2 3
数组
For For i i= =1 1 To To 2 n - 1 For For j j= =3 n To To i i+ +1 1 Step Step -1 -1
排序算法的分析及实现
冒泡排序和选择排序
高中信息技术课件
冒泡排序复习
冒泡排序方法: 从最下面的一个元素起,自下而上地比较相 邻的两个数据,将较小的数据换到上面。重复这 一个过程,直到处理完最后两个数据,称为一遍 加工。 然后对余下的n-1个数据重复上述处理过程, 直至最后进行余下两个数据的比较和交换。

d (1) d (2)
27 36 32 18
算法演示

d (3) d (4)
第 1 遍 排序 (i=1,min从1开始)如果找到更小的,用min记住它的编号
d (1) d (2) d (3) d (4) Min=1 For j=2 to 4 if d(min)>d(j) then min=j Next j 如果最小的数所在的位置min不是1,则交换d(min)和d(1) 27 36 32 18 Min=1 j=2 27 36 32 18 j=3
d(j) d(j) = = d(j d(j - 1) 1)
d(j d(j - 1) 1) = =k k End End If If
第1遍排序完成 2 3
第2遍排序完成 总排序完成
Next Next j j
Next Next i i
For 循环嵌套
S=0 For i=1 to 2 for j=1 to 3 s=s+j next j s=s+i Next I 该程序段运行后s 的值是多少? i 1 1 1 j 1 2 3 S=0 s=s+j=0+1=1 s=s+j=1+2=3 s=s+j=3+3=6 S=s+i=6+1=7
d(j)<d(j-1)
5、2、3 5、2、3 2、5、3 2、5、3 2、3、5 2、3、5
1 1
3
2
d(3)<d(2)不成立 不交换
d(2)<d(1)成立 交换 d(3)<d(2)成立 交换
If If d(j) d(j) < < d(j d(j - 1) 1) Then Then k k= = d(j) d(j)
18 27 32
36
分析

用i来表示排序 次数的变化

第1遍选择 ,j从2开始到4 Min=1 For j=2 to 4 if d(min)>d(j) then min=j Next j If min<>1 then 交换d(1)和d(min)
第2遍选择 ,j从3开始到4 Min=2 For j=3 to 4 if d(min)>d(j) then min=j Next j If min<>2 then 交换d(2)和d(min)
For i = 1 To 3 Min = i For j = i + 1 To 4 If d(Min) > d(j) Then Min = j Next j If Min <> i Then k = d(i) : d(i) = d(Min) : d(Min) = k End If Next i
程序实现
For i = 1 To n - 1 ‘n个数,排序n-1次 Min = i For j = i + 1 To n '如果找到更小的,用min记住它的编号 If d(j)< d(Min) Then Min = j Next j If Min <> i Then '如果最小的数所在的位置不是i,则交换 k = d(i) : d(i) = d(Min) : d(Min) = k End If Next i
d (1)
运行体验
i j 记录正在处理的遍数; 记录顺序查找时当前数组元素的下标;
d (2) d (3)
n=3
5 2 3
数组
Min 记录查找范围内最小数组元素的下标
i
1 1
j
2 3
36 32 27 Min=j j=4
18 27 32 36
Min=2 For j=3 to 4
if d(min)>d(j) then min=j
Next j If min<>2 then 交换d(2)和d(min)
算法演示

第 3 遍 排序(i=3,min从3开始)
d (1) d (2) d (3) d (4) Min=3 For j=4 to 4 if d(min)>d(j) then min=j Next j If min<>3 then 交换d(3)和d(min) 18 27 32 36 Min=3 j=4
Min=1
27 36 32 j=4 Min=j
18 36 32 27
18
算法演示

第 2 遍 排序(i=2,min从2开始)
18 36 32 27 Min=2 j=3 18 36 3Baidu Nhomakorabea 27 Min=j j=3
d (1) d (2) d (3) d (4)
18
36 32 27 Min=j j=4
18
因为一遍加工都是将本遍最小的元素象气泡 一样上浮至本遍的顶端位置,故称为冒泡排序。
练一练(冒泡排序)
d(1) 87
第1遍: 第2遍: 第3遍: 第4遍:
d(2) 23 87 30 30 30
d(3) 45 30 87 45 45
d(4) 53 45 45 87 53
d(5) 30 53 53 53 87

第3遍选择 ,j从4开始到4 Min=3 For j=4 to 4 if d(min)>d(j) then min=j Next j If min<>3 then 交换d(3)和d(min)
程序实现
i j 记录正在处理的遍数; 记录顺序查找时当前数组元素的下标;
Min 记录查找范围内最小数组元素的下标
2
2
1
2
s=s+j=7+1=8
s=s+j=8+2=10
2
3
s=s+j=10+3=13 s=s+i=13+2=15
选择排序
选择排序思想方法
选择排序(递增)的方法是: 找出数组元素中最小的数据,使它与第一 个元素中的数据交换位置 在余下的元素中继续找最小的元素,与第 二个元素中的数据交换位置 …………………… (观赏flash动画)
相关文档
最新文档