1. 程式人生 > >面試題----合並兩個有序數組

面試題----合並兩個有序數組

合並 printf 面試 有序數組 color merge set ++ style

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void merge(int a[],int len1,int b[],int len2)
{
    if(len1 <= 0 || len2 <= 0)
        return;

    int *c = (int *)malloc(sizeof(int) * (len1 + len2));
    memset(c,0,sizeof(int) * (len1 + len2));

    int i = 0;
    int m = 0
; int n = 0; while(m < len1 && n < len2) { if(a[m] < b[n]) { c[i] = a[m]; m++; } else { c[i] = b[n]; n++; } i++; } if(m == len1)//說明是a先結束 { for(;n < len2;n++) { c[i]
= b[n]; i++; } } else if(n == len2)//說明b先結束 { for(;m < len1;m++) { c[i] = a[m]; i++; } } printf("合並後的結果為:\n"); int k = 0; for(;k < i;k++) printf("%d ",c[k]); printf("\n"); free(c); }
int main() { int a[] = {1,3,4,7,12,13,17,43,52,110}; int b[] = {0,2,4,5,6,9,44}; merge(a,10,b,7); }

面試題----合並兩個有序數組