怎样程序编写把两个集合中的元素按照非递减序列并成一个集合
答案:1 悬赏:80
解决时间 2021-01-04 03:52
- 提问者网友:巴黎塔下许过得承诺
- 2021-01-03 22:43
利用数据结构中所学的线性表编写
最佳答案
- 二级知识专家网友:萝莉姐姐鹿小北
- 2021-01-03 23:33
这个问题怎么跑ASP团队来了呢,难道要用ASP写吗?呵呵,既然来了,我给你一段代码吧(算法).效率比较好的做法是先将两个集合排成非递减序列
后,在合并。这里的排序算法采用快速排序。
dim arr1(n)'集合A
dim arr2(m)’集合B
dim arr3(m+n)'合并后的集合C
dim idxarr1
dim idxarr2
dim idxarr3
idxarr1=1
idxarr2=1
idxarr3=1
'调用快速排序
call QuickSort(arr1,1,n)
call QuickSort(arr2,1,m)
'合并A和B
while (idxarr1<=n and idxarr2<=m)
'同时遍例arr1和arr2,按非递减序存入arr3中
if arr1(idxarr1)<=arr2(idxarr2) then
arr3(i++)=arr1(idxarr1++)
else
arr3(i++)=arr2(idxarr2++)
end if
Loop
while(idxarr1<n)
arr3(i++)=arr1(idxarr1++)
loop
while(idxarr2<m)
arr3(i++)=arr2(idxarr2++)
loop
sub QuickSort(arr,low,high)
if(low<high)
mid=Part(arr,low,high) '分割成2个序列(划分)
QuickSort(arr,low,mid-1)
QuickSort(arr,mid+1,high)
end if
end sub
function Part(arr,low ,high)
t=arr(low)
while(low<high)
while(low<high and arr(high)>=t)
high--
arr(low)=arr(high)
while(low<high and arr(low)<=t)
low++
arr(high)=arr(low)
loop
arr(low)=t
Part=low
end function
后,在合并。这里的排序算法采用快速排序。
dim arr1(n)'集合A
dim arr2(m)’集合B
dim arr3(m+n)'合并后的集合C
dim idxarr1
dim idxarr2
dim idxarr3
idxarr1=1
idxarr2=1
idxarr3=1
'调用快速排序
call QuickSort(arr1,1,n)
call QuickSort(arr2,1,m)
'合并A和B
while (idxarr1<=n and idxarr2<=m)
'同时遍例arr1和arr2,按非递减序存入arr3中
if arr1(idxarr1)<=arr2(idxarr2) then
arr3(i++)=arr1(idxarr1++)
else
arr3(i++)=arr2(idxarr2++)
end if
Loop
while(idxarr1<n)
arr3(i++)=arr1(idxarr1++)
loop
while(idxarr2<m)
arr3(i++)=arr2(idxarr2++)
loop
sub QuickSort(arr,low,high)
if(low<high)
mid=Part(arr,low,high) '分割成2个序列(划分)
QuickSort(arr,low,mid-1)
QuickSort(arr,mid+1,high)
end if
end sub
function Part(arr,low ,high)
t=arr(low)
while(low<high)
while(low<high and arr(high)>=t)
high--
arr(low)=arr(high)
while(low<high and arr(low)<=t)
low++
arr(high)=arr(low)
loop
arr(low)=t
Part=low
end function
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯