题型:综合题 题类:常考题 难易度:困难
浙江省杭州市建人高复2021届高三上学期信息技术第一次考试试卷
1)查找相邻两个非降序数据段:在未处理的数据区域中,从前往后找出第一个最长非降序数据段。若该数据段后面没有元素,则本轮处理完毕:否则在第1个数据段的后面,从前往后找出数组中第二个最长非降序数据段。
2)合并两个数据段:借助数组tmp.将查找到的两个相邻数据段合并成一个非降序数据段,然后将合并后的数据依次存回到原数组中。
3)若数组中还有未处理的数据,则重复(1)(2)步骤。每一轮数据处理完毕后,重新从数组第1个数据开始进行下一轮处理。若检测到某一轮没有合并处理,则说明n个数据已构成非降序数据段,数据处理结束。
Const n = 10
Dim a(1 To n + 5) As Integer
Din tmp(1 To n + 5) As Integer
'读取n个整数保存到数组a中,并在文本概Text1中显示,代码略。
Private Sub Comnand1_ Click()
Do While True
If Not Merge() Then Exit Do
'在列表概List1中输出这一轮合并后的数据,代码略。
Loop
End Sub
Function Position(low As Integer) As Integer
Din i As Int eger
For i=low To n-1
If Then Exit For
Next i
Position = i
End Function
Function Merge() As Bool ean
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 low1 < 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)
Next i
Loop
Merge = flag
End Function
a=[30,10,20,11,12,50] d=[0]*6 ; max=0 ; n=len(a) for i in range(1,n): for j in range(i): if a[j]<a[i]: d[i]+=1 if d[i]>max: max=d[i] |
执行程序后,变量max的值是( )
试题篮