高考信息技术复习专题七 排序算法的程序实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专题七 排序算法的程序实现
@《创新设计》
1
真题链接
重难突破
考点训练
【考纲标准】
考试内容 排序算法的程序实现: ①冒泡排序 ②选择排序
考试要求 c
@《创新设计》
2
真题链接
重难突破
考点训练
@《创新设计》
1.(2018·4月浙江选考)有一组正整数,要求仅对其中的素数进行升序排序。排序后素 数在前,非素数在后。排序示例如下。 排序前 86 71 5 41 81 79 37 89 排序后 5 37 41 71 79 89 86 81
6
真题链接
重难突破
考点训练
@《创新设计》
@《创新设计》
′本函数判断m是否是素数:是素数返回值为True,不是素数返回值为False ′代码略 End Function 解析 交换两个数的语句出现在外循环中,说明是选择排序,变量k表示每趟排序中的 最值,因此k的初值是i。题目是要求仅对其中的素数进行升序排序,因此比较的对象 a(k)还要求是素数。 答案 (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)
For i = 1 To 8 List1.AddItem a(i)
Next i End Sub Private Sub Command1_Click()
@《创新设计》
4
真题链接
重难突破
考点训练
k=1 ′(1)
If IsPrime(a(k)) Then flag = True Else flag = False For j = i + 1 To n
If IsPime(a(j)) Then
If a(j)<a(k) Then
′(2)
k=j flag = True
ElseIf a(j)=a(j-1) Then ′若相邻数据相等,进行剔除处理
10
真题链接
重难突破
考点训练
a(bottom)=a(j) ′(2) bottom=bottom-1
End If Next j i=i+1
Loop Text2.Text=" " For i=1 To bottom Text2.Text=Text2.Text+Str(a(i)) Next i End Sub
实现上述功能的VB代码如下,但加框处代码有错,请改正。 Const n=10 Dim a(1 To n) As Integer Private Sub Command1_Click()
Dim i As Integer,j As Integer,t As Integer Dim bottom As Integer ′剔除重复数据后元素的个数
12
真题链接
重难突破
考点训练
@《创新设计》
3.(2016·10月浙江省技术选考)小吴为了研究冒泡排序过程中数据的“移动”情况, 编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中), 在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标 签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据 显示在列表框List2中。程序运行界面如图所示。
@《创新设计》
11
真题链接
重难突破
考点训练
@《创新设计》
解析 本题考核从后往前冒泡的算法思想。从后往前冒泡,前面的数据先有序,当两 次比较的数据a(j-1)和a(j)中相等时,a(j-1)可能已经有序,因此用最后一个数据替换 a(j),同时数据的有效长度bottom少1个。 答案 (1)a(j)<a(j-1) 或a(j-1)>a(j) 或其他等价表达式 (2)a(j)=a(bottom) 或其他等价语句
@《创新设计》
9
真题链接
wenku.baidu.com
重难突破
考点训练
@《创新设计》
′获取排序前数据依次存储在数组 a 中,并在文本框 Text1 中显示。代码略 bottom=n i=1 Do While i<=bottom -1 For j=bottom To i+1 Step -1
If a(j)<a(i) Then ′(1) t=a(j):a(j)=a(j-1):a(j-1)=t
3
真题链接
重难突破
考点训练
实现上述功能的VB程序如下,但加框处代码有误,请改正。 Const n = 8 Dim a(1 To n) As Integer Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, t As Integer Dim flag As Boolean ′读取一组正整数,存储在数组a中,代码略 For i = 1 To n - 1
13
真题链接
重难突破
考点训练
@《创新设计》
实现上述功能的VB程序如下,但加框处代码有错,请改正。 Dim a(1 To 8) As Integer Dim n As Integer Private Sub Form_Load()
14
真题链接
重难突破
考点训练
a(1)=30:a(2)=47:a(3)=30:a(4)=72 a(5)=70:a(6)=23:a(7)=99:a(8)=24 n=8
@《创新设计》
5
真题链接
重难突破
考点训练
End If End If Next j If k <> i Then
t = a(k): a(k) = a(i): a(i) = t End If If Not flag Then Exit For ′Exit For表示退出循环 Next i ′依次输出排序后的数据。代码略 End Sub Function IsPrime(m As Integer) As Boolean
7
真题链接
重难突破
考点训练
@《创新设计》
2.(2017·11月浙江选考)小李基于冒泡排序算法编写一个VB程序,功能如下:在文本 框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显 示剔除重复数据后的升序排序结果。程序运行界面如下图所示。
8
真题链接
重难突破
考点训练
相关文档
最新文档