mips实现两个升序数组合并成一个升序数组
问题描述:
例如两个数组 list1: 2 4 6 9,list2: 3 5 7 8
合并 list3: 2 3 4 5 6 7 8 9
答
大概这种效果有帮助望采纳~
# read numbers until a non-negative number entered
# x in $t0
main:
li $t0,0
li $t1,0
li $t4,0
li $t5,0
loopab:
bge $t4,8,output #if c==a+b
bge $t0,4,loopb #if a empty
bge $t1,4,loopa #if b empty
mul $t2,$t0,4 #load a
mul $t3,$t1,4 #load b
lw $t2,r1($t2)
lw $t3,r2($t3)
ble $t2,$t3,adda
b addb
endadd:
b loopab
adda:
mul $a0,$t4,4
sw $t2,r3($a0)
addi $t4,$t4,1
addi $t0,$t0,1
b loopab
addb:
mul $a0,$t4,4
sw $t3,r3($a0)
addi $t4,$t4,1
addi $t1,$t1,1
b loopab
loopa:
bge $t0,4,output
b adda
loopb:
bge $t1,4,output
b addb
output:
bge $t5,$t4,end
mul $t0,$t5,4
lw $a0,r3($t0)
li $v0,1
syscall
li $a0,'\n'
li $v0,11
syscall
addi $t5,$t5,1
b output
end:
li $v0, 0 # return 0
jr $ra
.data
r1:
.word 2,4,6,9
r2:
.word 3,5,7,8
r3:
.space 32
答
c++的话用multiset容器就可以了,把这两个数组一个个传进去,自动排列,都不用操心。
答
#include<iostream>
using namespace std;
#include<set>
int main()
{
int a[4]={2,4,6,9};
int b[4]={3,5,7,8};
multiset<int>m;
for(int i=0;i<4;i++)
{
m.insert(a[i]);
}
for(int i=0;i<4;i++)
{
m.insert(b[i]);
}
for (multiset<int>::iterator it=m.begin(); it != m.end(); it ++ )
{
cout<<*it<<endl;
}
return 0;
}
看C++的,就是这么简单,看能给你点启发不。