题型:综合题 题类:常考题 难易度:困难
浙江省台州市2020届高三上学期信息技术11月选考科目教学质量评估试卷
⑴查找相邻两个非降序数据段在未处理的数据区域中,从前往后找出第一个最长非降序数据段。若该数据段后而没有元素,则本轮处理完毕;否则在第1个数据段的后面,从前往后找出数组中第二个最长非降序数据段。
⑵合并两个数据段
借助数组tmp,将查找到的两个相邻数据段合并成一个非降序数据段,然后将合并后的数据依次存回到原数组中。
⑶若数组中还有未处理的数据,则重复⑴⑵步骤。
每一轮数据处理完毕后,重新从数组第1个数据开始进行下一轮处理。若检测到某一轮没有合并处理,则说明n个数据己构成非降序数据段,数据处理结束。
Const n As Integer = 10
Dim a(1 To n+5) As Integer
Dim tmp(1 To n + 5) As Integer
Private Sub Form_Load())
‘读取n个整数保存到数组a中,并在文本框Textl中显示,代码略。
End Sub
Function Position(low As Integer) As Integer
Dim i As Integer
For i=low To n-1
If ① Then Exit For
Next i
Position=i
End Function
Then Exit For
Function Merge() As Boolean
Dim i As Integer, flag As Boolean, p1 As Integer, p2 As Integer
Dim low1 As Integer, high1 As Integer, high2 As Integer
flag=False:low1=1
Do While lowl1<n
High1=Position(low1)
If high1=n Then Exit Do Else flag=True
high2=Position(high1+1)
p1=low1:p2=high1+1
i=low1
Do While ②
If p2>high2 Or p1<=high1 And a(p1)<a(p2) Then
tmp(i)=a(p1):p1=p1+1
Else
tmp(i)=a(p2):p2=p2+1
End If
i=i+1
Loop
For i=low1 To high2
a(i)=tmp(i)
Nexti
③
Loop
Merge=flag
End Function
Private Sub Command1_Click()
Do While True
If Not Merge() Then Exit Do
‘’在列表框List1中输出这一轮合并后的数据,代码略。
Loop
End Sub
① ② ③
试题篮