算法实例选择排序法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
共比较数据2次,交换数据1次。 第3遍:寻找从d(3)到d(4)范围内的最小数据d(k),即k=4,将d(3)与d(k)互换数据:
总共比较数据1次,交换数据1次。
显然,通过上述3遍处理,数组d中最小、第2小、第3小的数据已经分别存储在数 组元素d(1)、d(2)、d(3)中,即数组元素d(1)到d(3)变为有序,而剩下的d(4)中的数据自 然是数组中的最大数据。因此,通过3遍这样的处理,整个数组内的数据将是有序的。 4个元素共需进行3遍加工处理,总的比较次数为3+2+1=6次,而总计交换次数 每一遍一次,共计只有3次。 对于n个元素的数组,用选择算法进行排序时,比较次数与冒泡算法相同,但交 换的次数比冒泡排序要少,因此它具有较高的效率。 2.选择排序算法的程序实现 选择排序的程序同样采用双重For循环嵌套来实现,外循环来控制是第几遍加工, 内循环用来控制数组内进行排序元素的下标变化范围。在每一遍加工结束,都需要用一 个变量来存储这一遍加工中所找出的最小(或最大)的数据在数组内的下标。 现有n个数据,分别存放在数组变量a(1 To n)当中,采用选择排序算法程序实现其 从小到大的程序结构如下: 实现该算法的程序段如下: For i=1 To n-1 k=i For j=i+1 to n If a(j)<a(k) Then k=j Next j If i<>k Then t=a(i):a(i)=a(k):a(k)=t End If Next i
当外循环变量i取1时,为第1遍加工,k=1,先假设第1个数据元素为最小值 ,内循环从第2个数开始比较,如果a(2)小于a(1),则将a(2)的下标赋值给k,否则k 值不变,这个方法目的是保证k是本遍加工最小数据元素的下标。这样,内循环一 次完成之后,判断k是不是a(1)的下标1,如果不是,则把a(k)与a(1)的数据进行交 换,否则就不进行交换。这样,第1遍加工后,就能把最小的数据存放在a(1)中。 当外层循环变量i取2时,为第2遍加工,找出a(2)到a(n)之间的最小数,记录好它的 下标k,把最小的数据放到a(2)中。这样,每遍加工,都能找出最小数的下标k, 比较是不是i,如果不是,就将a(k)与a(i)交换。经过n-1遍之后,就能实现从小到 大的排序。 选择排序的关键在于最小值变量k的值在不断的发生变化,而每一遍加工,最多 只交换一次数据,所以排序的效率比冒泡排序要高。
7. 小明编写了一个统计数组元素a(l)到a(n)中的“升序段”个 数s(如图所示的数据序列,其 “升序段”的个数等于3)的 VB程序。 部分程序代码如下: k = 0 s = 0 For i = 2 To n If a(i) > a(i - 1) Then Else k = 0 End If If k = 1 Then s = s + 1 Next i Textl.Text = Str(s) 方框中的正确语句是 A.k=k-1 B.K=1 C.K=-1
B.60、43、48、46、58、55 D.60、58、55、48、46、43
5. 已知算法1与算法2都是排序算法,可能是冒泡排序或者选择排 序,下面的表格反应的是在不同量的数据下,排序时进行数据 交换的次数,分析算法1与算法2最有可能的排序算法分别是 ( C )
排序的数据个数 5 11 22 53 84 105 算法1的交换次数 7 41 83 748 1821 2910 算法2的交换次数 3 8 13 52 71 94
( D ) D.K=k+1
1.利用已学的选择排序算法,对初始数据 [49,38,65,97,76,13,27,49],进行认真的 排序,并详细记录分次加工过程,请列出每次加工的数据序列。 序后 13 [38 65 97 76 49 27 49] 2.请完善选择排序算法的通用流程图(从小到 第二趟排序后 13 27 [65 97 76 49 38 49] 大的顺序)。 第三趟排序后 13 27 38 [97 76 49 65 49] 第四趟排序后 13 27 38 49 [76 97 65 49] 第五趟排序后 13 27 38 49 49 [97 65 76] 第六趟排序后 13 27 38 49 49 65 [97 76] 第七趟排序后 13 27 38 49 49 65 76 [97] 最后排序结果 13 27 38 49 49 65 76 97
3.某校通过政府招投标中心采购一套多媒体教学设备,有5家单 位参加竞标,竞标价分别为18万、17万、23万、15万、16万 元人民币。若采用选择排序算法对标价从大到小排序,需要 进行数据互换的次数是 ( B ) A.1 B.3 C.4 D.5 4.圣诞节即将来临,某商场欲对仓库某货号商品进行补仓以应对 即将举办的促销活动。6家供货商给出的报价分别为48、43、 60、46、58、55,若采用选择排序算法对其进行从大到小排序 ,则第三遍的排序结果是 ( C )
2.电视台为了统计参赛选手的短信支持度,来确定参赛选手的人气,对观众短信进行 记录,针对这一情况编写程序过程中效率最高的算法是 ( ) A.枚举算法 B.解析算法 C.选择排序 D.冒泡排序 3.有一组原始数据:21.0、35.3、31.6、12.8、37.0、19.0,利用选择排序算法进行从小到 大的排序,经过第二次加工后的数据排列顺序是 ( ) A.19.0、21.0、35.3、31.6、12.8、37.0 B.19.0、35.3、31.6、12.8、37.0、21.0 C.12.8、35.3、31.6、21.0、37.0、19.0 D.12.8、19.0、31.6、21.0、37.0、35.3
A.冒泡排序 冒泡排序 C.冒泡排序 选择排序
B.选择排序 选择排序 D.选择排序 冒泡排序
6. 下列关于排序的说法,错误的是 ( C ) A.相对而言,选择排序算法的效率比冒泡排序算法高 B.冒泡排序算法和选择排序算法的都需要用到双循环结构 C.对于n个无序数据,不管是冒泡排序还是选择排序,都要经过n-1遍加工 D.冒泡排序算法的程序实现一般要用到数组变量k,而选择排序则不需要
原始数据 第 1遍 第 2遍 第 3遍 第 4遍 第 5遍 48 60 60 60 60 43 43 58 58 58 60 48 48 55 55 46 46 46 48 48 58 58 43 43 46 55 55 55 46 43
A.60、58、48、46、43、55 C.60、58、55、46、43、48
百度文库
上虞区小越中学信息技术组
【例1】在2015年秋季学校运动会上,男生第一组6位选手的110米栏成绩(单位:秒) 分别是“18.4、17.3、16.9、18.8、18.1、16.7”,若使用选择排序法将该组的成绩按第 一名、第二名、第三名……的顺序排序,则第一次交换数据后的顺序是 ( ) A.18.8 18.4 17.3 16.9 18.1 16.7 B.16.7 17.3 16.9 18.8 18.1 18.4 C.18.8 17.3 16.9 18.4 18.1 16.7 D.16.7 18.4 17.3 16.9 18.8 18.1
上虞区小越中学信息技术组
4.有一组原始数据: game、car、oae、eat、win、base、dog,利用选择排序算法 进行从小到大的排序, 经过第二次加工后的数据排列顺序是 ( ) A.base、car、game、oae、eat、win、dog B.base、game、car、oae、eat、win、dog C.base、car、oae、eat、win、game、dog D.base、dog、game、car、oae、eat、win
《算法应用开发工程师》 职业概述:如果要问程序设计的灵魂是什么,相信很多人都会回答是算法,一个优秀的算法工程师往往可以带来 生产力的巨大提升。当你为实现某一功能而冥思苦想、费尽周折时,可能你需要的只是另一个精辟而又简洁的算 法。 工作内容:设计和优化应用算法,并协助完成应用软件方案设计及算法设计; 独立完成数学建模及算法设计; 编写相关技术文档。 职业要求:教育培训: 应用数学、计算机等相关专业本科以上学历。 工作经验:算法开发人员重在很强的逻辑思维能力。并且需要熟练掌握数学建模、应用算法的设计和优化理论; 精通C/C++ 或其他一种编程语言;熟悉数据库的接口技术。 薪资行情:一般月薪范围4500~10000元。全国平均薪酬水平达到6000元/月,北京平均薪酬水平达到6700元/月 左右,上海平均8500元/月,广州7500元/月。随着工作经验的积累增加,薪酬待遇的提高幅度会很大。 职业发展路径:国内算法应用开发工程师人才缺乏,需求相对较大。此职位专业技术性很强,对数学、算法及编 程能力有很高的要求。经过一段时间的工作经验的积累后,可发展成为高级软件工程师、需求工程师,但需要具 有丰富的软件开发经验和相关工作的技术背景。如果想成为技术经理、项目经理,则还需要具有较强的管理和组 织等方面的能力。
【例2】(浙江省2012年9月高考)实现某排序算法的部分VB程序如下: For i = 1 To 6 k=i For j = i + 1 To 7 If a(j) < a(k) Then k = j Next j If i <> k Then t = a(i): a(i) = a(k): a(k) = t End If Next i 在排序过程中,经过某一遍排序“加工”后,数组元素a(1)到a(7)的数据依次为“10,41, 75,12,63,11,85”。则下一遍排序“加工”后数组元素a(1)到a(7)的数据依次是( ) A. 10, 11, 41, 75, 12, 63, 85 B. 10, 11, 75, 12, 63, 41, 85 C. 10, 11, 12, 75, 63, 41, 85 D. 10, 11, 12, 41, 63, 75, 85
本节的学习要求掌握选择排序的基本思想,能根据 选择排序的思想来进行选择排序的操作。掌握用程序来 实现选择排序的算法,能根据生活中的实际要求编写选 排排序的程序,从而进一步熟悉多重循环程序的编写。 考查方式为选择题与填空题。
1. 用选择排序算法对一组学生的身高数据进行升序排序,已 知第一遍排序结束后的数据序列为166、169、177、175、 172,则下列选项中可能是原始数据序列的是 ( B ) A.175、177、169、166、172 B.177、169、166、175、172 C.166、177、169、175、172 D.166、169、172、175、177 2.有6位裁判为运动员评分,给出的分数分别为48、45、 63、46、59、57。采用选择排序算法对其进行排序,若 完成第一遍时的结果为:63、45、48、46、59、57,则 完成第二遍时的结果是 ( D ) A.63、45、48、46、59、57 B.63、59、57、48、45、46 C.63、59、57、46、45、48 D.63、59、48、46、45、57
算法实例
选择排序法
小越中学信息技术组
1.选择排序算法的概念 选择排序算法是对冒泡排序算法的改进。这种方法是对参加排序数组的所有元 素中找出最小(或最大)数据的元素,使它与第一个元素中数据相互交换位置。然后在 余下的元素中找出最小(或最大)的数据的元素,与第二个元素中的数据交换位置。以 此类推,直到所有元素成为一个有序的序列。 某数组d共有4个元素构成,每个元素的值如下表所示:
练习
1.选择排序的基本思想是在所有的记录中选出最小(大)的数据,把它与第一个数据交换, 然后在其余的记录中再选出最小(大)的数据与第二个数据交换,依此类推,直至所有 数据排序完成。有一组数据,顺序是“4、6、2、8、9”,用选择排序法将这组数据从 大到小排序,第二遍交换数据后的顺序是 ( ) A.9、4、6、2、8 B.9、8、4、2、6 C.9、8、2、4、6 D.9、8、2、6、4
数组元素 值
d(1) 105
d(2) 123
d(3) 97
d(4) 72
用选择排序法按升序进行排序的过程,从数组第一个元素开始起:第1遍:寻找从 d(1)到d(4)范围内的最小数据d(k),即k=4,将d(1)与d(k)互换数据:
共比较数据3次,交换数据1次。
第2遍:寻找从d(2)到d(4)范围内的最小数据d(k),即k=3,将d(2)与d(k)互换数据: