3.5选择排序算法及程序实现课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《3.5选择排序算法及程序实现课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3.5 选择 排序 算法 程序 实现 课件
- 资源描述:
-
1、1选择排序算法的概念选择排序算法的概念选择排序算法是对冒泡排序算法的改进。这种方法是选择排序算法是对冒泡排序算法的改进。这种方法是对参加排序数组的所有元素中找出最小对参加排序数组的所有元素中找出最小(或最大或最大)数据的元数据的元素,使它与第一个元素中数据相互交换位置。然后在余下素,使它与第一个元素中数据相互交换位置。然后在余下的元素中找出最小的元素中找出最小(或最大或最大)的数据的元素,与第二个元素的数据的元素,与第二个元素中的数据交换位置。以此类推,直到所有元素成为一个有中的数据交换位置。以此类推,直到所有元素成为一个有序的序列。序的序列。某数组某数组d共有共有4个元素构成,每个元素的值如
2、下表所示个元素构成,每个元素的值如下表所示:35 选择排序算法及程序实现选择排序算法及程序实现数组元素数组元素d(1)d(2)d(3)d(4)值值1051239772用选择排序法按升序进行排序的过程,从数组第一个元素开用选择排序法按升序进行排序的过程,从数组第一个元素开始起:始起:第第1遍:寻找从遍:寻找从d(1)到到d(4)范围内的最小数据范围内的最小数据d(k),即,即k4,将将d(1)与与d(k)互换数据:互换数据:共比较数据共比较数据3次,交换数据次,交换数据1次。次。第第2遍:寻找从遍:寻找从d(2)到到d(4)范围内的最小数据范围内的最小数据d(k),即,即k3,将,将d(2)与与
3、d(k)互换数据:互换数据:共比较数据共比较数据2次,交换数据次,交换数据1次。次。第第3遍:寻找从遍:寻找从d(3)到到d(4)范围内的最小数据范围内的最小数据d(k),即,即k4,将,将d(3)与与d(k)互换数据:互换数据:总共比较数据总共比较数据1次,交换数据次,交换数据1次。次。显然,通过上述显然,通过上述3遍处理,数组遍处理,数组d中最小、第中最小、第2小、第小、第3小的数据已经分别存储在数组元素小的数据已经分别存储在数组元素d(1)、d(2)、d(3)中,即中,即数组元素数组元素d(1)到到d(3)变为有序,而剩下的变为有序,而剩下的d(4)中的数据自然中的数据自然是数组中的最大
4、数据。因此,通过是数组中的最大数据。因此,通过3遍这样的处理,整个数遍这样的处理,整个数组内的数据将是有序的。组内的数据将是有序的。4个元素共需进行个元素共需进行3遍加工处理,总的比较次数为遍加工处理,总的比较次数为3216次,而总计交换次数每一遍一次,共计只有次,而总计交换次数每一遍一次,共计只有3次。次。对于对于n个元素的数组,用选择算法进行排序时,比较个元素的数组,用选择算法进行排序时,比较次数与冒泡算法相同,但交换的次数比冒泡排序要少,因次数与冒泡算法相同,但交换的次数比冒泡排序要少,因此它具有较高的效率。此它具有较高的效率。2选择排序算法的程序实现选择排序算法的程序实现选择排序的程序
5、同样采用双重选择排序的程序同样采用双重For循环嵌套来实现,循环嵌套来实现,外循环来控制是第几遍加工,内循环用来控制数组内进行外循环来控制是第几遍加工,内循环用来控制数组内进行排序元素的下标变化范围。在每一遍加工结束,都需要用排序元素的下标变化范围。在每一遍加工结束,都需要用一个变量来存储这一遍加工中所找出的最小一个变量来存储这一遍加工中所找出的最小(或最大或最大)的数的数据在数组内的下标。据在数组内的下标。现有现有n个数据,分别存放在数组变量个数据,分别存放在数组变量a(1 To n)当中,采当中,采用选择排序算法程序实现其从小到大的程序结构如下:用选择排序算法程序实现其从小到大的程序结构如
6、下:实现该算法的程序段如下:实现该算法的程序段如下:For i1 To n1kiFor ji1 to nIf a(j)a(k) Then kjNext jIf ik Thenta(i):a(i)a(k):a(k)tEnd IfNext i当外循环变量当外循环变量i取取1时,为第时,为第1遍加工,遍加工,k1,先假设第,先假设第1个数个数据元素为最小值,内循环从第据元素为最小值,内循环从第2个数开始比较,如果个数开始比较,如果a(2)小于小于a(1),则将则将a(2)的下标赋值给的下标赋值给k,否则,否则k值不变,这个方法目的是保证值不变,这个方法目的是保证k是是本遍加工最小数据元素的下标。这样
7、,内循环一次完成之后,判本遍加工最小数据元素的下标。这样,内循环一次完成之后,判断断k是不是是不是a(1)的下标的下标1,如果不是,则把,如果不是,则把a(k)与与a(1)的数据进行交的数据进行交换,否则就不进行交换。这样,第换,否则就不进行交换。这样,第1遍加工后,就能把最小的数据遍加工后,就能把最小的数据存放在存放在a(1)中。当外层循环变量中。当外层循环变量i取取2时,为第时,为第2遍加工,找出遍加工,找出a(2)到到a(n)之间的最小数,记录好它的下标之间的最小数,记录好它的下标k,把最小的数据放到,把最小的数据放到a(2)中。中。这样,每遍加工,都能找出最小数的下标这样,每遍加工,都
8、能找出最小数的下标k,比较是不是,比较是不是i,如果不,如果不是,就将是,就将a(k)与与a(i)交换。经过交换。经过n1遍之后,就能实现从小到大的遍之后,就能实现从小到大的排序。排序。选择排序的关键在于最小值变量选择排序的关键在于最小值变量k的值在不断的发生变化,而每的值在不断的发生变化,而每一遍加工,最多只交换一次数据,所以排序的效率比冒泡排序要高。一遍加工,最多只交换一次数据,所以排序的效率比冒泡排序要高。本节的学习要求掌握选择排序的基本思想,能根据本节的学习要求掌握选择排序的基本思想,能根据选择排序的思想来进行选择排序的操作。掌握用程序来选择排序的思想来进行选择排序的操作。掌握用程序来
9、实现选择排序的算法,能根据生活中的实际要求编写选实现选择排序的算法,能根据生活中的实际要求编写选排排序的程序,从而进一步熟悉多重循环程序的编写。排排序的程序,从而进一步熟悉多重循环程序的编写。考查方式为选择题与填空题。考查方式为选择题与填空题。1. 用选择排序算法对一组学生的身高数据进行升序排序,已用选择排序算法对一组学生的身高数据进行升序排序,已知第一遍排序结束后的数据序列为知第一遍排序结束后的数据序列为166、169、177、175、172,则下列选项中可能是原始数据序列的是,则下列选项中可能是原始数据序列的是 ()A175、177、169、166、172 B177、169、166、175
10、、172C166、177、169、175、172 D166、169、172、175、177B B 2有有6位裁判为运动员评分,给出的分数分别为位裁判为运动员评分,给出的分数分别为48、45、63、46、59、57。采用选择排序算法对其进行排序,若。采用选择排序算法对其进行排序,若完成第一遍时的结果为:完成第一遍时的结果为:63、45、48、46、59、57,则,则完成第二遍时的结果是完成第二遍时的结果是 ()A63、45、48、46、59、57 B63、59、57、48、45、46C63、59、57、46、45、48 D63、59、48、46、45、57 D D3某校通过政府招投标中心采购一套
11、多媒体教学设备,有某校通过政府招投标中心采购一套多媒体教学设备,有5家单家单位参加竞标,竞标价分别为位参加竞标,竞标价分别为18万、万、17万、万、23万、万、15万、万、16万万元人民币。若采用选择排序算法对标价从大到小排序,需要元人民币。若采用选择排序算法对标价从大到小排序,需要进行数据互换的次数是进行数据互换的次数是 ()A1 B3C4 D5B B 4圣诞节即将来临,某商场欲对仓库某货号商品进行圣诞节即将来临,某商场欲对仓库某货号商品进行补仓以应对即将举办的促销活动。补仓以应对即将举办的促销活动。6家供货商给出的家供货商给出的报价分别为报价分别为48、43、60、46、58、55,若采用
12、选择,若采用选择排序算法对其进行从大到小排序,则第三遍的排序排序算法对其进行从大到小排序,则第三遍的排序结果是结果是()C C 原始数据原始数据484360465855第第1遍遍604348465855第第2遍遍605848464355第第3遍遍第第4遍遍605855484346第第5遍遍605855484643A.60、58、48、46、43、55 B.60、43、48、46、58、55C.60、58、55、46、43、48 D.60、58、55、48、46、435. 已知算法已知算法1与算法与算法2都是排序算法,可能是冒泡排序或者选择排都是排序算法,可能是冒泡排序或者选择排序,下面的表格反
13、应的是在不同量的数据下,排序时进行数据序,下面的表格反应的是在不同量的数据下,排序时进行数据交换的次数,分析算法交换的次数,分析算法1与算法与算法2最有可能的排序算法分别是最有可能的排序算法分别是 ()C C 排序的数据个数排序的数据个数算法算法1的交换次数的交换次数算法算法2的交换次数的交换次数57311418228313537485284182171105291094A.冒泡排序冒泡排序冒泡排序冒泡排序 B选择排序选择排序选择排序选择排序C冒泡排序选择排序冒泡排序选择排序 D选择排序冒泡排序选择排序冒泡排序6.6. 下列关于排序的说法,错误的是下列关于排序的说法,错误的是 ( () )A
14、A相对而言,选择排序算法的效率比冒泡排序算法高相对而言,选择排序算法的效率比冒泡排序算法高B B冒泡排序算法和选择排序算法的都需要用到双循环结构冒泡排序算法和选择排序算法的都需要用到双循环结构C C对于对于n n个无序数据,不管是冒泡排序还是选择排序,都要个无序数据,不管是冒泡排序还是选择排序,都要经过经过n n1 1遍加工遍加工D D冒泡排序算法的程序实现一般要用到数组变量冒泡排序算法的程序实现一般要用到数组变量k k,而选择,而选择排序则不需要排序则不需要C C 7.7. 小明编写了一个统计数组元素小明编写了一个统计数组元素a(l)a(l)到到a(n)a(n)中的中的“升序段升序段”个个数
15、数s(s(如图所示的数据序列,其如图所示的数据序列,其 “ “升序段升序段”的个数等于的个数等于3)3)的的VBVB程序。程序。部分程序代码如下:部分程序代码如下:k k 0 0 s s 0 0For i For i 2 To n2 To n If a(i) a(i If a(i) a(i 1) Then1) Then Else Else k k 0 0 End If End If If k If k 1 Then s 1 Then s s s 1 1 Next iNext iTextl.Text Textl.Text Str(s) Str(s) 方框中的正确语句是方框中的正确语句是( ()
展开阅读全文