题库 高中信息

题干

(加试题)一个无序整数数组,对它排序,使其前半部分都为奇数有序,后半部分为偶数有序。
基本想法:利用插入排序算法,对奇偶子序列分别插入排序。用两个变量把整个数组分割为三个部分,第一个部分为奇数有序子序列,第二部分为偶数有序子序列,第三部分为未排序子序列。使用两个变量进行分割,mid 指向偶数有序子序列的一个元素,end1 指向未排序子序列(等待一个个插入前面的奇数有序子序列或偶数有序子序列)。

Const n = 7
Dim a(-1 To n) As Integer
Private Sub Form_Load()
'随机生成7个不重复的正整数到a()数组中。代码略
End Sub
Private Sub Command1_Click()
Dim mid As Integer, end1 As Integer
Dim i As Integer, j As Integer, num As Integer
mid = 0: end1 = 0
Do While end1 <= n
num = a(mid)   ‘①
j = end1
If num Mod 2 = 1 Then
Do While j - 1 >= mid and a(j - 1) < num ‘②
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = num
mid = mid + 1
Else
Do While a(j - 1) > num And j - 1 >= mid
a(j) = a(j - 1)
j = j - 1
Loop
a(j) = num
End If
end1 = end1 + 1
Loop
For i = 0 To n
List1.AddItem Str(a(i))
Next i
End Sub
划线处的代码有误,请改正:
①___________________________
②___________________________
上一题 下一题 0.99难度 填空题 更新时间:2019-05-08 07:39:10

答案(点此获取答案解析)

同类题4

某省举办大型活动,面向省内城市招募有志愿服务工作经历的志愿者,每个志愿者的报名数据包含城市序号、姓名(字母缩写)和参加志愿服务的次数。现需整理报名数据,要求是:先按城市序号从小到大排列;然后,同一城市的志愿者按参加志愿服务的次数从多到少排列。
按上述要求,编写一个VB程序,功能如下:在列表框List 1中显示整理前的数据,单击“整理”按钮Command 1,整理结果显示在列表框List 2中,程序运行界面如图所示。

(1)将数组元素q(1)到q(200)分为10段,如果每段恰好包含20个元素,采用选择排序算法分别对每段中的元素进行排序,整个排序过程中,数组元素之间的比较次数是________(单选,填字母:
A.次/B.次/C.次)。
(2)请在划线处填入合适的代码。
    报名总人数
城市数

 存储每个城市的报名人数


Private Sub Form_Load()
本过程读取城市序号,姓名和参加次数的数据分别存储在数组city;pname和times中,
并在List 1中显示,代码略
End Sub
Private Sub Command 1_Click()
Dim i As Integer,j As Integer,k As Integer,t As Integer,pos As Integer


Next i
   统计每个城市报名人数
 ①

Next i




Next i


  

Next i

  对各城市报名数据按参加志愿服务的次数进行排序



Next j

Next i

List 2.AddItem " " & city(q(i))& " " & pname(q(i))& " " & times(q(i))
Next i
End Sub
Function fp(head As Integer,tail As Integer)As Integer
Dim i As Integer,k As Integer

   

Next i

End Function