设计实现一个算法,用以对两个非递减有序表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 iResponse.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 iResponse.Write C(i)&", "
Else
Response.Write C(i)
End If
Next
Response.Write ")"
%>
结果如图