首页
高中语文
高中数学
高中英语
高中物理
高中化学
高中历史
高中道德与法治(政治)
高中地理
高中生物
高中音乐
高中美术
高中体育
高中信息技术
高中通用技术
资源详情
高中信息技术
浙教版
选修1 算法与程序设计
第二章 算法实例
2.3 排序
浙教版信息技术选修1 2.3 选择排序课件(共17张PPT)
文档属性
名称
浙教版信息技术选修1 2.3 选择排序课件(共17张PPT)
格式
zip
文件大小
196.8KB
资源类型
教案
版本资源
浙教版
科目
信息技术(信息科技)
更新时间
2019-08-23 09:57:53
点击下载
图片预览
1
2
3
4
5
6
7
文档简介
课件17张PPT。选择排序一:什么是选择排序(selection sort)选择排序是对冒泡排序算法的改进,在参加排序的所有数组元素中找出最小数据的元素,使它与第一个元素中的数据相互交换位置。然后再在余下的元素中找出最小数据的元素,与第二个元素中的数据相互交换位置,以此类推,直到所有元素成为一个有序的序列。此方法中交换的次数比冒泡排序少,具有较高的效率。选择排序的实现过程a(1)a(2)a(3)a(4)a(5)i=1(用变量i表示第一遍处理,也表示第一个数据元素)
在第1至第5个数组元素中找最小数据 (最小数据的下标用变量k表达,首先默认最小数据a(k)为第一个数据,然后余下的4个数据分别跟a(k)比较,如果有比a(k)小的话,k重新赋值为最小数据的下标)
如果找到的最小数据下标k不是1(i)的话,那么与第一个数据元素发生交换(如果k<>i(i=1),则a(k)与a(i)交换)
结果(第一个位置中的数据值最小,a(2)~a(5)为无序区域)i=1
k=1
for j=2 to 5
if a(j)
k=j
next j
if k<>i then
t=a(k): a(k)=a(i):a(i)=t
End if第一遍排序选择排序的实现过程a(1)a(2)a(3)a(4)a(5)i=2用变量i表示第二遍处理,也表示第二个数据元素)
在第2至第5个数组元素中找最小数据 (最小数据的下标用变量k表达,首先默认最小数据a(k)为第二个数据,然后余下的3个数据分别跟a(k)比较,如果有比a(k)小的话,k重新赋值为最小数据的下标)
如果找到的最小数据下标k不是2(i)的话,那么与第二个数据元素发生交换(如果k<>i(i=2),则a(k)与a(i)交换)
结果(第一个位置中的数据值最小,a(3)~a(5)为无序区域)i=2
k=2
for j=3 to 5
if a(j)
k=j
next j
if k<>i then
t=a(k): a(k)=a(i):a(i)=t
End if第二遍排序选择排序的实现过程a(1)a(2)a(3)a(4)a(5)i=3用变量i表示第三遍处理,也表示第三个数据元素)
在第3至第5个数组元素中找最小数据 (最小数据的下标用变量k表达,首先默认最小数据a(k)为第三个数据,然后余下的2个数据分别跟a(k)比较,如果有比a(k)小的话,k重新赋值为最小数据的下标)
如果找到的最小数据下标k不是3(i)的话,那么与第三个数据元素发生交换(如果k<>i(i=3),则a(k)与a(i)交换)
结果(第一个位置中的数据值最小,a(4)~a(5)为无序区域)i=3
k=3
for j=4 to 5
if a(j)
k=j
next j
if k<>i then
t=a(k)
a(k)=a(i)
a(i)=t
End if第三遍排序选择排序的实现过程a(1)a(2)a(3)a(4)a(5)i=4用变量i表示第四遍处理,也表示第四个数据元素)
在第4至第5个数组元素中找最小数据 (最小数据的下标用变量k表达,首先默认最小数据a(k)为第四个数据,然后余下的1个数据分别跟a(k)比较,如果有比a(k)小的话,k重新赋值为最小数据的下标)
如果找到的最小数据下标k不是4(i)的话,那么与第四个数据元素发生交换(如果k<>i(i=4),则a(k)与a(i)交换)
结果(第一个位置中的数据值最小,a(5)~a(5)为无序区域)i=4
k=4
for j=5 to 5
if a(j)
k=j
next j
if k<>i then
t=a(k)
a(k)=a(i)
a(i)=t
End if第四遍排序5个数据进行选择排序的程序代码For i=1 to 4
k=i
for j=i+1 to 5
if a(j)
next j
if k<>i then
t=a(k):a(k)=a(i):a(i)=t
End if
Next i对数组d中的n个数进行升序排序,其程序代码如下:For i=1 to n-1
k=i
for j=i+1 to n
if a(j)
next j
if k<>i then
t=a(k):a(k)=a(i):a(i)=t
End if
Next i对数组d中的n个数进行降序排序,其方框处程序代码如何修改思考:在i到n中定位最小数的位置如果k<>i,则a(k)与a(i)交换课 堂 练 习1、某数组10个元素,依次为2、20、12、15、13、50、55、60、80、30,若采用选择排序算法进行降序排序,则第4遍排序完成时的数据序列为 ( )B. 80、60、55、50、13、15、12、20、2、30A. 80、60、55、50、12、13、15、20、2、30C. 80、60、55、50、13、15、20、12、2、30D. 80、60、55、50、30、20、15、13、12、2B2、有6个数据,经过选择排序第一遍交换后,顺序为:21、65、36、84、45、72,则原始数据顺序不可能是( )A. 36、65、21、84、45、72 B. 84、65、36、21、45、72 C. 65、36、21、84、45、72 D. 45、65、36、84、21、72 C3、用选择排序法对数据7、6、3、9、2五个数据从大到小排序,共需经过( )次数据对调。 A. 10 B. 4 C. 5 D. 3D选择排序算法的流程图如图所示,请完成该算法的程序代码(以升序为例)Dim i, j, k, t As Integer
For i=1 To n-1
___________
For ___________
If d(j)
______________
End if
Next j
If k<>i Then
__________________________
End if
Next ik=ij = i+1 to nk= j t=a(k):a(k)=a(i):a(i)=t练习题1、某校通过政府投标中心采购一套多媒体教学设备,有5家单位参加竞标,竞标价分别为19万、15万、21万、13万、12万元人民币。若采用选择排序算法对标价从大到小排序,需要进行数据互换的次数是 ( )A. 1 B. 2 C. 3 D. 4B2.某食品连锁店5位顾客贵宾消费卡的积分依次为900、512、613、700、810,若采用选择排序算法对其进行从小到大排序,如下表,第二趟的排序结果是(??? )?????????????????? A.512?? ?613?? ?700? ??900?? ?810?? ?B.512? ??810? ??613? ??900? ??700?
?C.512?? ?900? ??613?? ?700?? ?810 ?D.512? ??613?? ?900?? ?700?? ?810D3、有6位裁判为运动员评分,给出的分数分别为49、45、61、46、58、57。采用选择排序对其进行排序,若完成第一遍时的结果为:61、45、49、46、58、57,则完成第二遍时的结果是( )
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、57D4、用选择排序算法对一组学生的身高数据进行升序排序,已知第一遍排序结束后的数据序列为165、168、178、175、171,则下列选项中可能是原始数据序列的是: ( )
175、178、168、165、171 B. 178、168、165、175、171
C. 165、178、168、175、171 C.165、168、171、175、178B5、有如下程序段:s=“ “
For i=1 to 3
h=1
For j=i+1 To 8
If a(h)
Next j
If i<>h Then
t=a(i) : a(i)=a(h) : a(h)=t
End If
s=s+Str(h)
Next i
Text1.Text=s数组元素a(1)到a(8)的数据依次为“2,5,20,9,10,8,11,1”经过该程序段“加工”后,文本框Text1中显示的内容是( )8 1 2 B. 8 2 1
C. 3 7 5 D. 3 5 7C6、对数组元素a(1)到a(8)进行升序排序,其排序算法的VB部分程序段如下:For m=1 To 7
p=m
For n=m+1 To 8
Next n
If p<>m Then
t=a(p) : a(p)=a(m) : a(m)=t
Next m方框中的语句是( )A. If a(n)
C. If a(n)>a(p) Then p=n D. If a(n)>a(p) Then p=mB7、下列VB程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素d(i)到d(n)的最小值。……
For i=1 To n-1k=I
For j=i+1 To n
If d(j)
Next j If i<>k Then t=d(i) : d(i)=d(k) : d(k)=t
Next i
……框内代码运行结速时,保存最小值的数组元素一定是( )A. d(n) B. d(j) C. d(i) D. d(k)D8、10位选手参加面试的顺序通过抽签决定。小陈设计了一个抽签排序的VB程序,功能如下:该程序远行时,在左边列表框List1中显示所有选手的编号与抽签号,单击“排序”按钮Command1,选手的信息按抽签号从小到大排序,并将结果显示在右边列表框List2中。实现该功能的VB程序如下,但加框处代码有错,请改正。Dim a(1 to 10) As String 数组a用于储存10位选手编号
Dim b(1 to 10) As Integer 数组b用于储存10位选手的抽签号
Form_Load 过程用于数组a和数组b的赋值,并显示在列表框List1中
Private Sub Form_Load
第i位选手编号存储在a(i)中,该选手的抽签号储存在b(i)
代码略
End Sub
Private Sub Command Click( )
Dim k As Integer, i As Integer, j As Integer
Dim t1 As String, t2 As Integer
For i= 1 To 9
k=i
For j=i+1 To 1
If b(j)
Next j
If k<>I Then
t1=a(i) : a(i)=a(k) : a(k)=t1
t2=b(i) : b(i)=b(k) : b(k)= t1
End if
Next i
For i=1 To 10
List1 . AddiItem Str(b(i)+” “+a(i)
Next I
End Sub(1)(2)(3)(1)处应该为:________(2)处应该为:________(3)处应该为:________10t2List29、第K大的数。给定n(n<=128)个数和K的值,求出n个数中的第K大的数。假定:给定的n个数互不相同,且n大于等于K。
VB应用程序的运行界面如图所示:程序说明:由随机函数Rnd生成n个数(1—100之间)存放至数组d中,并显示在列表框List1中,n通过文本框Text1输入得到,K的值由文本框Text2得到。单击“查找”按钮,在Text3中显示统计结果。“查找”按钮的鼠标单击事件处理过程代码如下。将在程序中画线处的代码补充完整。
Private Sub Command1_Click()
Dim d(1 To 128) As Integer
Dim n As Integer, i As Integer, j As Integer, k As Integer
Randomize
n = Val(Text1.Text)
k = Val(Text2.Text)
List1.Clear
For i = 1 To n
d(i) = Int(100 * Rnd + 1)
List1.AddItem Str(d(i))
Next i For i = 1 To n - 1
p = i
For j = i + 1 To n
If d(p) < d(j) Then p = j
Next j
If p <> i Then
temp = d(i): d(i) = d(p): d(p) = temp
End If
Next i
List2.Clear
For i = 1 To n
List2.AddItem Str(d(i))
Next i
Text3.Text = Str(d(k))
End Sub
点击下载
同课章节目录
第一章 算法和算法的表示
1.1 使用计算机解决问题的一般过程
1.2 确定解决问题的方法
1.3 把解决问题的方法步骤化
1.4 算法的概念和表示方法
第二章 算法实例
2.1 枚举算法
2.2 解析算法
2.3 排序
2.4 查找
第三章 面向对象程序设计的基本知识
3.1 面向对象程序设计方法简介
3.2 在可视化的程序设计环境VB中建立一个应用程序
第四章 VB程序设计初步
4.1 基本数据类型、常量、变量
4.2 基本运算和表达式
4.3 语句
4.4 过程和函数
第五章 算法实例的程序实现
5.1 枚举算法的程序实现
5.2 解析算法的程序实现
5.3 排序算法的程序实现
5.4 查找算法的程序实现
5.5 递归算法实例及程序实现
非试题类资料
点击下载
VIP下载