试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省杭州市建人高复2021届高三上学期信息技术第一次考试试卷

给定一个数组(有n个元素),小李通过边分段、边合并的方式将n个数据处理成一个非降序数据段(a(1)≤a(2)≤a(3)≤……≤a(n)),每一轮数据处理方法如下:

1)查找相邻两个非降序数据段:在未处理的数据区域中,从前往后找出第一个最长非降序数据段。若该数据段后面没有元素,则本轮处理完毕:否则在第1个数据段的后面,从前往后找出数组中第二个最长非降序数据段。

2)合并两个数据段:借助数组tmp.将查找到的两个相邻数据段合并成一个非降序数据段,然后将合并后的数据依次存回到原数组中。

3)若数组中还有未处理的数据,则重复(1)(2)步骤。每一轮数据处理完毕后,重新从数组第1个数据开始进行下一轮处理。若检测到某一轮没有合并处理,则说明n个数据已构成非降序数据段,数据处理结束。

(1)、根据上述描述,若数组各元素为“3,9,7,6,8,2,1,5,7,4”,则第一轮合并处理完成后,数组中的数据依次是:(用“,”间隔)。
(2)、实现上述功能的VB程序如下.请在划线处填入合适代码。

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

举一反三
返回首页

试题篮