mips实现两个升序数组合并成一个升序数组

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


img

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++的,就是这么简单,看能给你点启发不。