合并两个有序数组 merging two sorted arrary to make a sorted arrary

时间:2022-04-02 22:07:03
#include<iostream>
using namespace std;
/*
  1:合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素; 2016/07/06 song.yang
*/
void MergeArray(int a[],int alen,int b[],int blen)
{
int len=alen+blen-1; 
alen--;
blen--;
while (alen>=0 && blen>=0)
{
if (a[alen]>b[blen])
{
a[len--]=a[alen--];
}else{
a[len--]=b[blen--]; 
}
}


while (alen>=0)
{
a[len--]=a[alen--];

while (blen>=0)
{
a[len--]=b[blen--];

}


int  main()
{
int a[]={2,4,9,8,10,0,0,0,0,0};
int b[]={1,5,6,7,11};
MergeArray(a,5,b,5);
for (int i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
cout<<a[i]<<" ";
}
return 0;

}



//java版本

package algorithm;
/** 

*   Created by song.yang on 2016年7月6日 
*  
*/
public class MergeArr {
    public void mergeArr(int a[],int b[]){
    int alen = 5;
    int blen = 5;
    int len = alen + blen - 1 ;
    alen--;
    blen--;
    while(alen>=0&&blen>=0){
    if (a[alen]>b[blen])
    {
    a[len--]=a[alen--];
   
    }else{
    a[len--]=b[blen--]; 
    }
    }
    while(alen>=0){
    a[len--] = a[alen--];
    }
    while(blen>=0){
    a[len--] = b[blen--];
    }
    }
public static void main(String[] argv){
int a[]={2,4,6,8,10,0,0,0,0,0};
int b[]={1,3,5,7,9};
MergeArr ma = new MergeArr();
ma.mergeArr(a, b);
for (int i=0;i<a.length;i++)
{
System.out.print(a[i]+" "); 
}
}
}