浙江高中信息技术选考复习选择排序冒泡排序习题
- 格式:doc
- 大小:57.50 KB
- 文档页数:2
20200224冒泡排序(一)练习一、选择题(本大题共10小题,共10.0分)1.请先阅读以下内容,再做选择题标准的冒泡排序是从尾向前冒泡, 可以将小的数字往前冒泡,也可以将大的数字往前冒泡, 但是注意每趟扫描冒泡时都是从尾部(最后1个数组元素)开始往前两两比较冒泡排序也可以从头开始往后冒泡, 可以将小的数字往后(尾部)冒泡,也可以将大的数字往后(尾部)冒泡, 但是注意每趟扫描冒泡时都是从头部(第1个数组元素)开始往前两两比较冒泡排序过程不是很清楚的同学,请看课后回放,或者上在线课堂看冒泡视频演示,在首页下方,找下可以找到播放视频连接(视频加载稍慢)例如上课举例的数字进行冒泡排序:,按照从小到大升序排列, 采用的冒泡规则是: 从尾部向前冒泡, 小的数交换到前面, 那么第1遍(趟)的结果是:这个称为第1遍也称为第1趟,然后进行第2 3.4 5遍(趟)就可以完成排序.今天本课的内容,掌握程度如何,请选择( )A. 完全掌握B. 一般掌握C.有点疑问D. 有存有很大的问题.2.有一个数组,采用冒泡排序,第一遍排序后:结果为:3,18,5,35,8,9,11,13,32,那么该数组的原始顺序不可能是()注意有可能从尾向前,也有可能从头往后冒泡,但是此题从数据结构看应该是小的数字从尾往前冒A. 18,5,35,8,9,11,13,32,3B. 18,5,35,8,9,11,3,13,32C. 18,5,35,3,8,9,11,13,32D. 3,18,5,35,13,11,32,8,93.下表记录了6个数据的排序过程。
分析表中数据可知,该排序采用的算法与排序方式分别为( )A. 冒泡排序,降序B. 选择排序,降序C. 冒泡排序,升序D. 选择排序,升序4.,84,90。
如下表所示:若采用冒泡排序算法对其进行从小到大排序,则上表中第二遍的排序结果是()提示:看第1遍的结果,判断冒泡的方向A. 84,90,85,95,92B. 84,85,95,90,92C. 84,85,95,90,92D. 84,90,92,85,935.篮球联赛中,有5个班级的比赛积分依次为14,11,13,8,9。
冒泡排序法——《2.3.2冒泡排序》第1课时教学设计一.教材分析本节内容选自浙江教育出版社《算法与程序设计》第二章第三节。
在教材处理上,本课时主要学习教材第二章第3节的“排序”中的冒泡排序思想、算法以及编程思路,还加入了冒泡排序算法的程序实现,下节课让学生进行上机实践。
冒泡排序算法的程序实现部分的内容在教材中的并没有讲到的。
这样的处理主要是为了:一是以加深学生对算法和程序设计的关系的体会;二是可以通过对程序实现的讲解和练习形成对由双重循环构建而成的程序的分析思路和分析方法,进一步加深对循环的理解。
排序算法是使用频率最高的算法之一,而冒泡排序是其中一种很典型而且相对简单的方法。
它的学习同时为后面的选择排序做了铺垫。
通过冒泡实例的学习,可以提高学生的程序设计能力,为今后在算法与程序设计方面的进一步研究和学习打下基础。
二、学情分析本课的授课对象是灵石中学高二选考学生。
学生来自于各个班级走班,学生学习态度,学习水平差距比较大,目前已学习“算法与程序设计”基础内容,具备一定观察、分析和动手实践能力,简单的单层循环能基本理解。
但对于比较复杂的双层循环认知度较低。
因此,对于用自然语言和流程图语言描述的算法,大多能理解,但是,最后落实到用程序设计语言来编写程序,则比较困难。
如何让学生实现自然语言和流程图语言向程序设计语言转化,是比较大的挑战。
三、教学目标及重难点一、教学目标知识目标:掌握冒泡排序的原理;理解冒泡排序的流程图;编写冒泡排序的主要代码;能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,体会程序设计在现实中的作用;情感目标:培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的程序书写习惯;二、重点难点重点:理解冒泡排序原理及它的流程图难点:理解冒泡排序中的遍、次等概念(即对变量使用的理解)四、设计思路算法与程序设计,本身是比较枯燥,如果长篇大论讲冒泡排序的原理,变成老师一人在唱独角戏,学生学习就很被动。
第7讲冒泡排序的算法实现班级学号姓名【课堂目标】理解冒泡排序的基本思想,掌握冒泡排序的程序结构,实现冒泡排序【知识要点】1. 常用的冒泡排序程序结构。
让循环变量 i 从 1 到 n - 1 循环 ' 进行 n - 1 遍加工让循环变量 j 从 n 到 i + 1 循环'自下而上的进行两两比较和交换若 d(j)与相邻的数据 d(j – 1)互逆,则两者进行交换(冒泡一次)内层循环尾外层循环尾2. 在排序过程中,假如数据存放在数组 d 中,如果通过两两比较发现 d(j)和 d(j – 1)逆序,可以通过以下程序段实现交换: t =【例题解析】例1现在我们的任务是,以65、34、78、29、18这五个数为例,根据冒泡法,从后往前冒泡,实现从小到大排序。
用i表示排序遍数,用j表示数组元素下标变化①第一遍排序,即i = 1时,j从5开始到2,a(j)和a(j-1)一共比较了次,交换了次。
第一遍排序结果。
②第二遍排序,即i = 2时,j从5开始到3,a(j)和a(j-1)一共比较了次,交换了次。
第二遍排序结果。
③第三遍排序,即i = 3时,j从5开始到4,a(j)和a(j-1)一共比较了次,交换了次。
第三遍排序结果。
④第四遍排序,即i = 4时,j从5开始到5,a(j)和a(j-1)一共比较了次,交换了次。
第四遍排序结果。
例2结合冒泡排序流程图及例1过程,完成冒泡排序程序代码和流程图的填写For i = 1 ToFor j = n ToIf Thent=d(j) : : d(j-1)=tEnd IfNext jNext i例 3 实现某排序算法的部分VB 程序段如下:For i = 1 To 4For j = 8 To i + 1 Step -1If d(j) < d(j - 1)Thent = d(j) : d(j) = d(j - 1) : d(j - 1)= tEnd IfNext js = s + Str(d(i))Next iText1.Text=s若数组元素d(1)到d(8)的数据依次为“12,7,18,13,9,17,6,23”,运行该程序段后,文本框Text1 中显示的内容是A. 6 7 9 12B. 23 18 17 13C. 12 7 18 13D. 9 17 6 23【编程实践】一、升序冒泡(上浮):使用VB实现冒泡排序对n个数据进行排序。
专题4 选择排序算法及VB程序实现(专项练习)1. 某校通过政府招投标中心采购一套多媒体教学设备,有5家单位参加竞标,竞标价分别为19万、15万、21万、13万、12万元人民币。
若采用选择排序算法对标价从大到小排序,需要进行数据互换的次数是()A. 1B. 2C. 3D. 42. 有如下VB 程序段:s = "26170534": n = Len(s): y = ""For i = 1 To nch(i) = Mid(s, i, 1)Next iFor i = 1 To nk = iFor j = i To n Step 2If ch(j) < ch(k) Then k = jNext jIf k <> i Then t=ch(k): ch(k)=ch(i): ch(i)=ty = y & ch(i)Next iLabel1.Caption = y该程序段运行后,标签Label1中显示的内容是()A. 0123B. 4567C. 01234567D. 041526373. 有如下VB 程序段:For i = 5 To 4 Step -1k = iFor j = 6 - i To 1 Step -1If a(j) < a(k) Then k = jNext jIf i <> k Thent = a(i): a(i) = a(k): a(k) = tEnd IfNext i数组元素a(1)到a(5)的值依次为“41,66,70,83,31”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A. 31,41,66,83,70B. 83,70,66,41,31C. 83,66,70,41,31D. 31,41,66,70,834. 某VB 程序段如下:i = 1Do While i <= 3min= ij = i + 1Do While j <= 6If a(j) < a(min) Then min= jj = j + 1LoopIf i <> min Then t=a(i): a(i)=a(min): a(min)=ti = i + 1Loop数组元素a(1)到a(6)的值依次为“7, 8, 3, 9, 6, 2”,则上面程序段在运行后,数组元素a(1)到a(6)的数据依次是()A.9, 8, 7, 3, 6, 2B.2, 3, 6, 7, 8, 9C.2, 3, 6, 9, 8, 7D.9, 8, 7, 6, 3, 25. 有如下VB 程序段:s = "7218634594" : n = Len(s):c = 0For i = 1 To n - 1a(i) = Val(Mid(s, i, 2))Next iFor i = 1 To n - 2 Step 2k = iFor j = i + 2 To n - 1 Step 2If a(j) < a(k) Then k = jNext jIf k <> i Thent=a(i): a(i)=a(k): a(k)=t: c=c+1End IfNext iText1.Text = Str(c)该程序段运行后,Text1 中显示的内容是()A. 1B. 2C. 3D. 46. 某排序算法的VB 程序段如下:For i = 1 To 4k = iFor j = 5 To i + 1 Step -1If a(j) < a(k) Then k = jNext jIf k < > i Thentmp = a(k): a(k) = a(i): a(i) = tmpf(i) = TrueEnd IfNext i当数组元素a(1)到a(5)的值依次为“8,2,1,21,3”,数组f的初值均为False,执行该程序段,f 数组中元素值为True 的个数有()A. 1 个B. 2 个C. 3 个D. 4 个7. 有如下VB程序段:a(1) = 44: a(2)= 36: a(3)= 58: a(4)= 65: a(5)= 12b = 0:c = 0For i = 1 To 4k = iFor j = i + 1 To 5If a(j) < a(k) Then k = j: b = b + 1Next jIf k < > i Thent = a(i): a(i) = a(k): a(k) = tc = c + 1End IfNext iText1.Text = Str(b) + Str(c)该程序段执行后,文本框Text1显示的内容是()A. 53B. 44C. 43D. 348. 某VB 程序段如下:i = 1: s = ""Do While i <= 3k = ij = i + 1Do While j <= 8If a(j) < a(k) Then k = jj = j + 1LoopIf i < > k Thent = a(i): a(i) = a(k): a(k) = tn = n + 1End Ifs = s + Str(a(i)) : i = i + 1LoopLabel1.Caption = Str(n) + ":" + s数组a(1)到a(8)依次为:“16, 19, 8, 20, 4, 12,6, 15”,程序运行后,标签中显示的值为()A. 2:4 6 8B.2:8 6 4C. 3:4 6 8D.3:8 6 49. 某学校举行校园歌手比赛,数组a存放歌手的得分,数组mc存放名次。
1.(2018·4月浙江选考)有一组正整数,要求仅对其中的素数进行升序排序。
排序后素数在前,非素数在后。
排序示例如下。
排序前86 71 5 41 81 79 37 89排序后 5 37 41 71 79 89 86 81实现上述功能的VB程序如下,但加框处代码有误,请改正。
Const n =8Dim a(1 To n) As IntegerPrivate Sub Command1_Click()Dim i As Integer, j As Integer, k As Integer, t As IntegerDim flag As Boolean′读取一组正整数,存储在数组a中,代码略For i = 1 To n - 1k=1′(1)If IsPrime(a(k)) Then flag =True Else flag =FalseFor j =i +1 To nIf IsPime(a(j)) ThenIf a(j)<a(k)Then′(2)k =jflag =TrueEnd IfEnd IfNext jIf k <> i Thent =a(k): a(k) =a(i): a(i) =tEnd IfIf Not flag Then Exit For′Exit For表示退出循环Next i′依次输出排序后的数据。
代码略End SubFunction IsPrime(m As Integer) As Boolean′本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False ′代码略End Function答案(1)k=i (2)Not flag Or a(j) <a(k) 或Not IsPrime(a(k)) Or a(j) <a(k)或Not flag Or flag And a(j) <a(k) 或Not IsPrime(a(k)) Or IsPrime(a(k)) And a(j) <a(k)2.(2017·11月浙江选考)小李基于冒泡排序算法编写一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。
第3节排序算法及程序实现真题再现选考题组1.(2018浙江11月选考,12,2分)下列VB程序段功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。
如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。
s=Text1.Textn=Len(s)For i=1 To ny(i)=1Next iy(j)=y(j)+1Elsey(j)=y(j)+1End IfNext jNext i上述程序段3个方框处的表达式分别为( )A.(1)n (2)1 (3)Mid(s,j,1)>=Mid(s,i,1)B.(1)n (2)1 (3)Mid(s,j,1)>Mid(s,i,1)C.(1)n-1 (2)i+1 (3)Mid(s,j,1)>=Mid(s,i,1)D.(1)n-1 (2)i+1 (3)Mid(s,j,1)>Mid(s,i,1)答案 C 本题考查字符串和数组的操作。
y(i)表示第i个字符的次序,初始化为1。
接下来的双循环,用i和j表示字符串中字符的位置,用i和j把所有的字符两两比较一遍,如果Mid(s,j,1)>= Mid(s,i,1),则y(j)=y(j)+1,反之,y(i)=y(i)+1。
外循环i从1至n-1,内循环j从i+1至n。
如i=1时,把第2至第n个字符依次与第1个字符比较;i=2时,把第3至第n个字符依次与第2个字符比较;……,以此类推。
2.(2017浙江4月学考+选考,12,2分)小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。
小赵编写的VB程序段如下:p=1: q=10Do While p < qiMin=p:iMax=pFor i=p+1 To qIf a(i) < a(iMin) Then iMin=iIf a(i) > a(iMax) Then iMax=iNext it=a(iMin): a(iMin)=a(p): a(p)=tt=a(iMax): a(iMax)=a(q): a(q)=tp=p+1q=q-1Loop要使程序实现上述算法思想,则方框中的语句是( )A.If iMax=p Then iMax=iMinB.If iMin=p Then iMin=iMaxC.If iMax=p Then iMin=iMaxD.If iMin=p Then iMax=iMin答案(1)a(j)<a(j-1)(或a(j-1)>a(j)或其他等价表达式) (2)a(j)=a(bottom)(或其他等价语句)解析(1)本程序使用冒泡排序思想,从小到大升序排序(后面元素比前面元素小要交换)。
专题九其他常用算法1.(2019·4月浙江省选考)小明基于冒泡排序思想设计了一个改进的排序算法。
该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。
算法的VB程序段如下,但加框处代码有错,请改正。
′待排序数据存储在数组a中(a(1)~a(n)),要求升序排列For i =1 To (n -1) \2For j = 1 To n -i * 2If a(j) > a(j + 1)Then′(1)t =a(j): a(j) =a(j +2): a(j +2) =tEnd IfNext jNext iFor i =1 To n \2j = 2 * i -1If a(j) > a(j +1) Then t =a(j): a(j) =a(j +1): a(j +1) =tNext iFor i = 1 To n Step 2′(2)t =a(i): j =i - 1Do While t < a(j)a(j +1) =a(j): j =j -1Loopa(j +1) =tNext i解析插入排序也是经常要考到的问题。
先是分别对奇数位和偶数位进行排序,排序后再使偶数位大于前面的元素,最后进行插入排序,只需要对奇数位进行插入排序即可。
仅奇数位插入排序,i从1时会导致出现a(0)下标越界,所以i从3开始,即第二空答案为3 To n。
答案(1)a(j)>a(j+2) (2)3 To n2.(2018·11月浙江选考)某种数据加密方法描述如下(加密前后的数值都是0~255的整数):•以m个数据为一段,将n个待加密数据依次分割成若干个数据段。
剩余数据(个数小于m)为一个独立数据段。
•数据段加密规则:数据个数等于m的数据段,先进行值变换,再进行位置变换,得到加密数据段。
数据个数小于m的数据段,只进行值变换,直接得到加密数据段。
•依次合并加密数据段,即为最后的加密数据。
浙教版高中信息技术《冒泡排序算法》精品课件一、教学内容本节课我们将要学习是浙教版高中信息技术选修3《算法与程序设计》中第二章第一节——《冒泡排序算法》。
具体内容包括冒泡排序原理、流程图绘制、算法描述以及用编程语言实现冒泡排序。
二、教学目标1. 理解冒泡排序原理和流程。
2. 学会绘制冒泡排序流程图。
3. 掌握冒泡排序算法描述和编程实现。
4. 培养学生分析问题和解决问题能力。
三、教学难点与重点教学难点:冒泡排序流程图绘制和编程实现。
教学重点:冒泡排序原理和算法描述。
四、教具与学具准备1. 教具:PPT课件、计算机、投影仪。
2. 学具:学生用书、练习本、计算机。
五、教学过程1. 实践情景引入以生活中例子(如:排队)引入排序概念,激发学生兴趣。
2. 理论讲解详细讲解冒泡排序原理和流程,引导学生理解算法核心思想。
3. 流程图绘制指导学生绘制冒泡排序流程图,强调关键步骤和条件判断。
4. 算法描述根据流程图,引导学生用自然语言描述冒泡排序算法。
5. 编程实现使用Python编程语言,带领学生实现冒泡排序,并解释关键代码。
6. 例题讲解分析一道典型例题,讲解如何应用冒泡排序解决问题。
7. 随堂练习分组讨论并完成随堂练习,巩固所学知识。
六、板书设计1. 《冒泡排序算法》2. 内容:冒泡排序原理流程图绘制算法描述编程实现七、作业设计1. 作业题目:请用自然语言描述冒泡排序算法。
编写一个Python程序,实现冒泡排序。
2. 答案:冒泡排序算法描述:从数组第一个元素开始,相邻两个元素进行比较,若前一个大于后一个,则交换位置。
经过一轮比较后,最大元素被移到数组。
然后对剩下元素重复这个过程,直到所有元素都被排序。
Python程序如下:def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, ni1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arrarr = [64, 34, 25, 12, 22, 11, 90]print("原数组:", arr)sorted_arr = bubble_sort(arr)print("排序后数组:", sorted_arr)八、课后反思及拓展延伸1. 课后反思:本节课学生对冒泡排序理解程度,以及编程实现过程中遇到问题。
经典算法选择填空历年选考真题班级姓名1.【2015.10】已知单调函数()f x 在[0,1]区间存在一个0x ,使0()0f x 。
现用对分查找法搜索0x 的值,开始搜索区间为[0,1],若经过10次对分查找后还需继续搜索,则第11次搜索区间的长度为( ) A.1/2B. 1/10C. 21/10D. 101/22.【2015.10】n 个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。
小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。
为此,小刘对算法进行优化,编写了一个VB 程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2 中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。
运行效果如第16题图所示。
实现上述功能的VB 代码如下,但加框处代码有错,请改正。
Dim a(1 To 8) As Integer Dim n As Integer Private Sub Form_Load()'n=8,排序前数据存储在数组a 中,并在列表框Listl 中显示 '代码略 End SubPrivate Sub Command1_Click()Dim flag As Boolean 'flag 值为True 表示一遍加工中发生过交换 i = 1 flag = TrueDo While '(1) For j = n To i + 1 Step -1 If a(j) < a(j - 1) Thenk = a(j): a(j) = a(j - 1): a(j - 1) = k flag = Truei <= n - 1 Or flag = TrueEnd If Next ji = i + 1 LoopLabel3.Caption = "排序过程的加工遍数为" + '(2)For i = 1 To nList2.AddItem Str(a(i))Next iEnd Sub3.【2016.4】有如下程序段:For i = 1 To 2For j = 5 To i + 1 Step -1If a(j) > a(i) Thent = a(j): a(j) = a(i): a(i) = tEnd IfNext jNext i数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A. 77,45,33,16,24B. 77,33,45,16,24C. 77,24,45,16,33D. 77,45,33,24,164.【2016.4】已知一无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b(1))≤a(b(2)) ≤a(b(3))……≤a(b(n))(示例如图所示),对这些有序数据可进行对分查找。
2024年高中信息技术冒泡排序课件浙教版一、教学内容本节课我们将学习浙教版高中信息技术教材第二章第四节“冒泡排序”。
具体内容包括冒泡排序的基本原理、算法步骤、代码实现及其优化方法。
二、教学目标1. 理解冒泡排序的基本原理和算法步骤,能够手动模拟冒泡排序过程。
2. 学会使用编程语言实现冒泡排序,并能够对排序算法进行简单的优化。
3. 培养学生的算法思维和逻辑推理能力。
三、教学难点与重点重点:冒泡排序的基本原理、算法步骤、代码实现。
难点:冒泡排序的优化方法,以及在实际应用中如何选择合适的排序算法。
四、教具与学具准备1. 计算机、投影仪等教学设备。
2. 编程软件(如Python、C++等)。
3. 课堂练习题和案例。
五、教学过程1. 实践情景引入通过一个实际案例,让学生了解排序在日常生活中的重要性。
例如:让学生们将一组成绩按照从高到低的顺序排列。
2. 基本原理讲解介绍冒泡排序的基本原理,即通过相邻元素的比较和交换,使较大(或较小)的元素逐渐从前往后(或从后往前)移动。
3. 算法步骤介绍详细讲解冒泡排序的算法步骤,包括比较、交换等操作。
4. 代码实现使用Python或C++等编程语言,现场演示冒泡排序的代码实现。
5. 例题讲解结合一道例题,讲解冒泡排序的应用,让学生学会如何分析问题和解决问题。
6. 随堂练习让学生动手编写冒泡排序的代码,并针对特定数据进行排序。
7. 优化方法介绍讲解冒泡排序的优化方法,如设置标志位、提前终止等。
8. 小结六、板书设计1. 冒泡排序基本原理2. 算法步骤3. 代码实现4. 优化方法七、作业设计1. 作业题目(1)使用冒泡排序对一组数据进行排序。
(2)针对冒泡排序,提出一种优化方法,并解释其原理。
2. 答案(1)见代码示例。
(2)设置标志位,记录是否发生交换,若某一轮排序未发生交换,则提前终止排序。
八、课后反思及拓展延伸1. 反思2. 拓展延伸引导学生了解其他排序算法,如选择排序、插入排序、快速排序等,并比较它们的优缺点。
冒泡排序课堂练习题
冒泡排序课堂练习题
1、用冒泡排序对4,5,6,3,2,1进行从小到 大排序,第三趟排序后的状态为: A、
4 5 3 2 1 6 B、 4 3 2 1 5 6 C、 3 2 1 4 5 6 D、2 1 3 4 5 6 第1趟: 4,5,3,2,1,6
第2趟: 4,3,2,1,5,6 第3趟: 3,2,1,4,5,6 第4趟: 2,1, 3,4,5,6 第5趟: 1,2,
3,4,5,6
冒泡排序课堂练习题
2、对n个不同的排序码进行冒泡排序,实现从 到大排序,在下列哪种情况下
比较的次数最多。 A. 从小到大排列好的 B. 从大到小排列好的 C. 元素无序 D.
元素基本有序 正确答案:B 这是最坏的情况,我们设计程序要从考 虑到最坏的
情况入手,这样设计出来的 程序容错率才高,才有使用价值。
冒泡排序课堂练习题
3、用冒泡排序法对数据7,6,3,9,2从 小到大排序,共需经过( )趟排序已可以
得到正确结果?。 A.2 B.3 C.4 D.5正确答案:C 最坏的情况是要排序N-1趟,
但此题并不是 最坏的情况,最坏的情况是9,7,6,3, 2。所以此题不用排5起已得
到正确结果。 但程序设计时不能这样,要考虑最坏情况。
冒泡排序课堂练习题
4、有一组数,顺序是“4,7,8,1,9”,用冒 泡排序法将这组数从小到大排序,
第二趟第二次 对比的数据两个数是:( )。 A. 1、4 B. 4、7 C. 1、7 D. 1、8 正
确答案:C 第1趟: 4,7,1,8,9 第2趟: 4,1,7,8,9 第3趟: 1,4,7,8,9 第4趟:
1,4,7,8,9
课后限时训练(九) 算法的程序实现一、选择题1.在给定的正整数区间[m,n](m<n)中寻找被3除余1,被7除余2的正整数个数的算法是()A.递归算法B.枚举算法C.冒泡排序D.选择排序B[本题主要考查各种算法的基本思想。
本题中的算法符合枚举算法的基本思想,即一一列举所有可能的解,并验证该解是否是正确解。
]2.数组a共有6个元素构成:49、45、46、58、57,若采用选择排序算法进行从大到小排序,则元素的比较次数和排序需要几遍才能完成() A.15次,4遍B.15次,5遍C.30次,4遍D.30次,5遍【解析】n个数选择排序的比较次数是:n*(n-1)/2次,排序遍数为:n -1遍。
【答案】 B3.按日期先后整理一堆文件的算法是:第一次,在这叠文件中从上到下找出日期最早的文件反扣在桌面上;第二次从剩余文件中从上到下找出日期最早的文件反扣在第一次找出的文件上;第三次,从剩余文件中从上到下找出日期最早的文件反扣在第二次找出的文件上;……,依此类推,最后完成整理工作。
此算法属于()A.选择排序B.对分查找C.递归算法D.冒泡排序A[本题主要考查选择排序的基本思想。
选择排序的基本思想是从所有的记录中选出最大或最小的数据,把它与第一个数据交换,然后在其余的记录中再选出最大或最小的数据与第二个数据交换。
以此类推,直至所有数据排序完成。
本题中解决问题的思想方法是选择排序的基本思想。
]4.某8位男生的肺活量数据放在数组元素a(1)到a(8)中,其数据依次为“3205,3408,3471,3498,3621,3829,4233,4540”。
使用对分查找,设定查找键Key,若第一个被访问到的数据是3498,小于Key值,则第二个被访问到的数据是()A.3408 B.3829C.4233 D.4540B[(1)因为第一个查到的数据3498位于8个数的第4个位置,说明对分查找确定取中间点的表达方式是Fix((i+j)/2),i和j标记了待查找区间的范围。
命题:杜宗飞
1
排序专题练习
行政班: 教学班: 姓名: 学号:
题号 1 2 3 4 5 6 7 8 9 10 11 12 13
答案
1、某书店在5所学校流动售书量(单位:本)分别是82、113、46、69、35。采用冒泡排序对
其进行排序,若完成第一遍时的结果是35、82、113、46、69,则完成第二遍时的结果是 ( )
A.35、82、113、46、69 B.35、46、82、69、113
C.35、46、82、113、69 D.35、46、69、82、113
2、(2009年10月高考题)下表记录了6个数据的排序过程。分析表中数据可知,该排序采
用的算法与排序方式分别为
原始数据 65 57 59 44 45 69
第1遍 44 65 57 59 45 69
第2遍 44 45 55 57 59 69
第3遍 44 45 57 65 59 69
… … … … … … …
(A)冒泡排序,降序 (B)选择排序,降序 (C)冒泡排序,升序 (D)选择排序,升序
3、用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为:
A、4 5 3 2 1 6 B、4 3 2 1 5 6
C、3 2 1 4 5 6 D、1 2 3 4 5 6
4、用冒泡排序法对数据7,6,3,9,2从小到大排序,共需经过( )趟排序已可以得
到正确结果?。
A.2 B.3 C.4 D.5
5、有一组数,顺序是“4,7,8,1,9”,用冒泡排序法将这组数从小到大排序,第二趟第
二次对比的数据两个数是:( )。
A. 1、4 B. 4、7
C. 1、7 D. 7、8
6、篮球联赛中,有5个班级的比赛积分依次为14,11,13,8,9。若采用冒泡排序算法对其
进行从大到小排序,需要排几遍交换几次
(A)1 2 (B)4 2 (C)1 8 (D)4 8
7、(2011年统考题)某书店在5所学校流动售书量(单位:本)分别是88,110,48,64,35。
采用冒泡排序对其进行排序,若完成第一遍时的结果是:35,88,110,48,64,则完成第
二遍时的结果是
(A)35,88,110,48,64 (B)35,48,88,64,110
(C)35,48,88,110,64 (D)35,48,64,88,110
8、(2012年3月高考题)实现某排序算法的部分VB程序如下:
For i = 1 To 4
For j = 5 To i + 1 Step -1
If a(j) < a(j - 1) Then t = a(j) : a(j) = a(j - 1) : a(j - 1) = t
Next j
Next i
命题:杜宗飞
2
在经过某一遍排序“加工”后,数组元素a(l)到a(5)的数据依次为“28,70,53,57,30”。
则 下一遍排序“加工”后数组元素a(l)到a(5)的数据应该是
(A)28, 30,70,53,57 (B)28, 30,53,57,70
(C)28,30,57,53,70 (D)28, 30,53,70, 57
9、(2010年统考题)某校有5位学生参加学生会主席竞选,得票数依次为110,98,3,150,
67。使用选择排序的方法对得票数进行从大到小排序,需要进行数据互换的次数是
(A)5 (B)4 (C)3 (D)2
10、(2010年统考题)有6位裁判为运动员评分,给出的分数分别为49,45,61,46,58,57。
采用选择排序算法对其进行排序,若完成第一遍时的结果为:61,45,49,46,58,57,则
完成第二遍时的结果是
(A)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,57
11、(2011年统考题)用选择排序算法对一组学生的身高数据进行升序排序,已知第一遍排
序结束后的数据序列为165,168,178,175,171,则下列选项中可能是原始数据序列的是
(A)175,178,168,165,171 (B)178,168,165,175,171
(C)165,178,168,175,171 (D)165,168,171,175,178
12、(2010年3月高考题)实现某排序算法的部分VB程序如下:
For i = 1 To 4
k = i
For j = i + 1 To 5
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(l)到a(5)的数据依次为“29,12,9,17,24”。
则下一遍排序“加工”后数组元素a(l)到a(5)的数据应该是
(A)29,24,12,17,9 (B)29,24,17,12,9
(C)29,24,9,17,12 (D)9,12,29,17,24
13、(2011年10月高考题)实现某排序算法的部分VB程序如下:
For i = 1 To 4
k = i
For j = i + 1 To 5
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(5)的数据依次为“17,31,23,55,6”。当运行上述程
序后,数组元素之间数据交换的总次数是
(A)2 (B)3 (C)4 (D)5
答案 写在前面表格上!