- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- + 排序算法及程序实现
- 查找算法及程序实现
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
在信息加工中,经常要对被处理的数据进行排序,在排序时经常要进行数据的交换。下面有四个程序段:



其中能正确地将x和y两个变量中的数据进行交换的程序段有( )




其中能正确地将x和y两个变量中的数据进行交换的程序段有( )
A.1个 | B.2个 | C.3个 | D.4个 |
以下算法中,需要通过多重循环一一列举出解决问题的所有可能解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解;而需要从实际问题中归纳出数学表达式,就此求出解;这两个算法分别是( )
A.穷举法、公式法 | B.循环法、递归法 |
C.查找法、函数法 | D.枚举法、解析法 |
(一)顺序查找数据:我们假定被查找的数据存储在有n个元素的数组变量d中,要寻找的一个特定的数据(这个数据称为查找键)已经存储在变量key中。
下面是顺序查找算法的输入输出说明。
输入:查找键(设在变量key中)。 被查找的数据(设在数组变量d中)。
输出:若找到,输出值为key的数据所在的数组元素的下标,记为i;
若未找到,输出结果为提示字符串:"找不到"。
当在n=8个元素的数组里顺序查找数据的示意图如下:


找到情况 未找到情况
总结顺序查找数据结果判断条件:
(1)、 当找到时,肯定i<="8," n个数据时,肯定i<=n,i即为找到的数组元素下标,d(i)=key;
(2)、 当"找不到"时,i=9>8了;n个数据时,当i=n+1时,表示"找不到"。
顺序查找的主程序段如下:
Private Sub 顺序查找_Click()
n个数据放入d(1)到d(n)中
Key =" Val(Text1.Text):" i =___1___‘变量Key从文本框Text1取的数要查找的数;
Do While ①
i =" i" + 1
Loop
If i <=" n" Then
Text2.Text = "在d(" + Str(i) + ")中" ‘例如在文本框Text2显示:“在d(6)中”
Else
Text2.Text = "找不到"
End If
End Sub
上程序Do While的条件 ① 是( )
下面是顺序查找算法的输入输出说明。
输入:查找键(设在变量key中)。 被查找的数据(设在数组变量d中)。
输出:若找到,输出值为key的数据所在的数组元素的下标,记为i;
若未找到,输出结果为提示字符串:"找不到"。
当在n=8个元素的数组里顺序查找数据的示意图如下:


找到情况 未找到情况
总结顺序查找数据结果判断条件:
(1)、 当找到时,肯定i<="8," n个数据时,肯定i<=n,i即为找到的数组元素下标,d(i)=key;
(2)、 当"找不到"时,i=9>8了;n个数据时,当i=n+1时,表示"找不到"。
顺序查找的主程序段如下:
Private Sub 顺序查找_Click()
n个数据放入d(1)到d(n)中
Key =" Val(Text1.Text):" i =___1___‘变量Key从文本框Text1取的数要查找的数;
Do While ①
i =" i" + 1
Loop
If i <=" n" Then
Text2.Text = "在d(" + Str(i) + ")中" ‘例如在文本框Text2显示:“在d(6)中”
Else
Text2.Text = "找不到"
End If
End Sub
上程序Do While的条件 ① 是( )
A.Key <> d(i) |
B.i <= n |
C.Key <> d(i) And i <= n |
D.Key <> d(i) or i <= n |
(加试题)小明想用VB编程制作一个名次计算器,首先将同学的成绩录入到计算机中,同时存放在数组a中,显示在左边列表框中。点击“排序”按钮后,程序会将成绩从高到低依次排序显示在右边的列表框中。运行界面如图所示,请在两个划线处填入代码。

Dim a(1 To 100) As Single
Dim shu As Integer
Private Sub Command1_Click()
Dim i, j, k As Integer
Dim t As Single
For i =" 1" To shu - 1
k = i
For j =" i" + 1 To shu
If___________Then
t =" a(j):" a(j) =" a(k):" a(k) = t
End If
Next j
Next i
For i =" 1" To shu
List2.AddItem "第" & Str(i) & "名:" & Str(a(i))
Next i
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim cj As Single
If KeyAscii =" 13" Then
cj = Val(Text1.Text)
If cj > 0 Then
________
List1.AddItem Str(shu) & ":" & Str(cj)
a(shu) = cj
End If
Text1.Text = ""
End If
End Sub

Dim a(1 To 100) As Single
Dim shu As Integer
Private Sub Command1_Click()
Dim i, j, k As Integer
Dim t As Single
For i =" 1" To shu - 1
k = i
For j =" i" + 1 To shu
If___________Then
t =" a(j):" a(j) =" a(k):" a(k) = t
End If
Next j
Next i
For i =" 1" To shu
List2.AddItem "第" & Str(i) & "名:" & Str(a(i))
Next i
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim cj As Single
If KeyAscii =" 13" Then
cj = Val(Text1.Text)
If cj > 0 Then
________
List1.AddItem Str(shu) & ":" & Str(cj)
a(shu) = cj
End If
Text1.Text = ""
End If
End Sub
某市组织了一次我心目中最喜爱的球队的评比活动,6个球队网上投票数为201、287、501、189、397、295,若采用冒泡排序算法对其进行从大到小排序,则第三遍加工后的结果是( )
原始数据 | 201 | 287 | 501 | 189 | 397 | 295 |
第一遍 | 501 | 201 | 287 | 397 | 189 | 295 |
第二遍 | 501 | 397 | 201 | 287 | 295 | 189 |
第三遍 | | | | | | |
A.501 397 295 287 201 189 |
B.501 397 201 287 295 189 |
C.501 397 295 201 189 287 |
D.501 397 295 201 287 189 |
某协会进行钓鱼比赛,最后有十人进入决赛,录入员编制了如下Visual Basic程序,功能是根据成绩进行排序,程序中数组 a保存所有参赛者的成绩,数组b保存此成绩对应的姓名,第i位参赛者的成绩保存在a(i)中,姓名保存在b(i)中。
程序界面如图所示,左边列表框List1中显示原始数据(成绩和相应的姓名),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示在列表框List2中。

解决此问题的算法流程图如图所示,排序部分的程序段如下:
Dim a (1 To 10) As Single
Dim b (1 To 10) As String
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,x As Single,y As String
For i=1 To 9
k=i
For j=i+1 To 10
If ①________ Then k=j
Next j
If k<>i Then
x=a(i):a(i)=a(k):②________
y=b(i):b(i)=b(k):b(k)=y
End If
Next i
For i=i To 10
List2.AddItem Str(a(i))+“ ”+b(i)
Next i
End Sub
Private Sub Form_Load()
’此过程用于对数组a和数组b进行初始赋值,代码略
End Sub

(1)解决此问题的算法是________。(选填:冒泡排序或选择排序)
在程序①和②画线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①画线处应填入________。
程序中②画线处应填入________。
程序界面如图所示,左边列表框List1中显示原始数据(成绩和相应的姓名),单击“排序”按钮(Command1),排序后的结果按成绩从高到低显示在列表框List2中。

解决此问题的算法流程图如图所示,排序部分的程序段如下:
Dim a (1 To 10) As Single
Dim b (1 To 10) As String
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,x As Single,y As String
For i=1 To 9
k=i
For j=i+1 To 10
If ①________ Then k=j
Next j
If k<>i Then
x=a(i):a(i)=a(k):②________
y=b(i):b(i)=b(k):b(k)=y
End If
Next i
For i=i To 10
List2.AddItem Str(a(i))+“ ”+b(i)
Next i
End Sub
Private Sub Form_Load()
’此过程用于对数组a和数组b进行初始赋值,代码略
End Sub

(1)解决此问题的算法是________。(选填:冒泡排序或选择排序)
在程序①和②画线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①画线处应填入________。
程序中②画线处应填入________。
在已排序的数组d[数组元素d(1)≥d(2)≥…≥d(n)]中查找键值为Key的数,其对分查找的VB程序段如下:
i=1:j=n
xb=0
Do While i<=j
m=Fix((i+j)/2)
If d(m)=Key Then
xb=m
Exit Do
End If
If d(m)>Key Then
①____
Else
②____
End If
Loop
划线处的语句为( )
i=1:j=n
xb=0
Do While i<=j
m=Fix((i+j)/2)
If d(m)=Key Then
xb=m
Exit Do
End If
If d(m)>Key Then
①____
Else
②____
End If
Loop
划线处的语句为( )
A.①j=m+1 ②i=m+1 | B.①i=m-1 ②j=m-1 |
C.①j=m-1 ②i=m+1 | D.①i=m+1 ②j=m-1 |
丢失的成绩。某校运动会上,高一男子100米决赛的成绩已出,前8名的成绩记录单由于不小心丢失一张,只剩下7个成绩,分别是(单位:秒)11.5,11.8,12.1,12.5,13.1,13.5,13.9。后来找到了,需将找到的成绩插入相应的位置,使数据序列仍保持有序,并求出该成绩的名次。
为实现这一目标,设计如下VB程序,界面如图所示:先输入7位选手成绩,自动将成绩从小到大排序后输出到列表框List1中。输入丢失成绩后,点击“插入”按钮将该成绩添加到适当位置并输出选手成绩到List2中,并在Label4中显示该成绩的名次。

实现上述功能的VB程序如下,请完成以下问题:
Dim a(1 To 8) As Single
Dim n As Integer,i As Integer,x As Single
Private Sub Form_Load()
Dim j As Integer,temp As Single
’输入7位选手100米成绩,代码略
’将7位选手成绩从小到大排序
For i=1 To 6
For j=7 To i+1 Step-1
If a(j)<a(j-1) Then
temp=a(j)
a(j)=a(j-1)
a(j-1)=temp
End If
Next j
Next i
’将排序好的选手成绩输出到列表框List1
List1.Clear
For i=1 To 7
List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command1_Click() ’确定该遗漏选手的成绩排名第几位?
x=Val(Text1.Text)
i=1
Do While x>a(i)
①__ __
Loop
Label4.Caption=“该选手位列第”+Str(i)+“名!”
’ 将该遗漏选手成绩添加到适当位置,使数组仍保持有序并输出到列表框List2
For j=8 To i+1 Step-1
a(j)=a(j-1)
Next j
②__ __
For i=1 To 8
List2.AddItem a(i)
Next i
End Sub
(1)Form Load事件处理过程中代码采用的算法是________(选择排序/插入排序/冒泡排序)
(2)①处代码应为:__________________________________________。
②处代码应为:____________________________________________。
为实现这一目标,设计如下VB程序,界面如图所示:先输入7位选手成绩,自动将成绩从小到大排序后输出到列表框List1中。输入丢失成绩后,点击“插入”按钮将该成绩添加到适当位置并输出选手成绩到List2中,并在Label4中显示该成绩的名次。

实现上述功能的VB程序如下,请完成以下问题:
Dim a(1 To 8) As Single
Dim n As Integer,i As Integer,x As Single
Private Sub Form_Load()
Dim j As Integer,temp As Single
’输入7位选手100米成绩,代码略
’将7位选手成绩从小到大排序
For i=1 To 6
For j=7 To i+1 Step-1
If a(j)<a(j-1) Then
temp=a(j)
a(j)=a(j-1)
a(j-1)=temp
End If
Next j
Next i
’将排序好的选手成绩输出到列表框List1
List1.Clear
For i=1 To 7
List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command1_Click() ’确定该遗漏选手的成绩排名第几位?
x=Val(Text1.Text)
i=1
Do While x>a(i)
①__ __
Loop
Label4.Caption=“该选手位列第”+Str(i)+“名!”
’ 将该遗漏选手成绩添加到适当位置,使数组仍保持有序并输出到列表框List2
For j=8 To i+1 Step-1
a(j)=a(j-1)
Next j
②__ __
For i=1 To 8
List2.AddItem a(i)
Next i
End Sub
(1)Form Load事件处理过程中代码采用的算法是________(选择排序/插入排序/冒泡排序)
(2)①处代码应为:__________________________________________。
②处代码应为:____________________________________________。
(加试题)下列有关排序和查找算法的说法正确的是( )
A.对N个数组元素进行排序,冒泡排序比选择排序的交换次数少 |
B.对N个数组元素进行排序,冒泡排序比选择排序的比较次数多 |
C.能用对分查找完成的任务,就一定可以使用顺序查找 |
D.只要待查找的数据是有序的,使用对分查找比顺序查找的效率高 |