close
#include<stdio.h>
#define MAX 20

void merge(int a[],int b[],int out[]);
void out_array(int out[]);
int main(void)
{

int a[]={128,34,23,17,10,0};

int b[]={1352,128,127,34,23,17,10,9,0};

int out[MAX];

merge(a,b,out);

out_array(out);

return 0;
}


void merge(int a[],int b[],int out[])
{

int a_length=0,b_length=0;

int a_data,b_data;

int i=0,j=0,k=0;

while(1)                                          //計算陣列A和陣列B的長度 

{

a_length=(a[i]==0)?a_length:++a_length;

b_length=(b[j]==0)?b_length:++b_length;

i=(a[i]==0)?i:++i;

j=(b[j]==0)?j:++j;

if(a[i]==0 && b[j]==0)

break;

}

for(i=0;a[i]!=0;i++)                          //將陣列A重複部分填0 

{

for(j=0;b[j]!=0;j++)

{

if(a[i]==b[j]){

a[i]=0;

break;

}

}

}

i=0;

j=0;

k=0;

while(a[i]!=0 || b[j]!=0)                      //排序 

{

a_data=a[i];

b_data=b[j];

out[k]=(a[i]>b[j])?a[i]:b[j];

k++;

if(a_data>b_data)

i++;

else if(a_data==0 && i<a_length)

i++;

if(b_data>a_data)

j++;

else if(b_data==0 && j<b_length)

j++;

}

}


void out_array(int out[])
{

int i=0;


while(out[i]!=0)

{

printf("%3d ",out[i++]);

}

printf("%3d\n",0);

}


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 GavinHuang 的頭像
    GavinHuang

    Gavin的部落格

    GavinHuang 發表在 痞客邦 留言(0) 人氣()