设计实现一个算法,用以对两个非递减有序表A、B进行合并,其中A=(2,5,8,9) ,B=(3,4,8,10,12,20)

2025-04-16 03:30:39
推荐回答(1个)
回答1:

设计实现一个算法,用以对两个非递减有序表A、B进行合并,其中A=(2,5,8,9) ,B=(3,4,8,10,12,20)

手头没工具,用ASP给你写一个

<%
Dim A,B,C,X,Y,Z,i
A=Array(2,5,8,9) '初始化数组
B=Array(3,4,8,10,12,20)
C=Array() '初始化数组
X=Ubound(A) '取数组下标
Y=Ubound(B) 
Z=X+Y+1 '取出A,B数组成员数,正常应该是+2,但由于是做为C的下标,只要+1就行
ReDim C(Z) '重定义数组C
For i=0 To Z '所有成员都循环一次,合并入数组C
    If i<=X Then '小于X说明还在数组A中
        C(i)=A(i)
    Else '否则就进入数组B
        C(i)=B(i-X-1) '下标是从0开始
    End If
Next
X=Ubound(C) '取数组C的下标,+1就是成员数
Response.Write "合并数组 A , B 后,新数组 C 有 "&X+1&" 个成员!
"
Response.Write "排序前:C=Array("
For i=0 To X '输出数组C排序前状态
    If i        Response.Write C(i)&", "
    Else
        Response.Write C(i)
    End If
Next
Response.Write ")
"
'冒泡
For i=0 To X
    For J=1 To X-i-1
        If C(J)>C(J+1) Then '成员两两相比较,前成员大于后成员
            TempC=C(J) '前成员转存
            C(J)=C(J+1) '后成员提到前成员位置
            C(J+1)=TempC '交换前后成员位置
        End If
    Next
Next
Response.Write "排序后:C=Array("
For i=0 To X
    If i        Response.Write C(i)&", "
    Else
        Response.Write C(i)
    End If
Next
Response.Write ")"
%>

结果如图