合并排序不起作用

时间:2016-05-31 10:09:49

标签: c sorting data-structures mergesort

我正在进行合并排序,我知道当其中一个列表出现时我遇到了问题 比较时为空。然后它将打印空值。 帮助我处理条件..我无法正确使用条件语句。 在此先感谢.. :))

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

void merge(int *a, int n, int *b, int m)
{
    int i=0, j=0, c[100], k=0;

    //make traitment :
    //================
    while(i!=n && j!=m) {
      if(i!=n)
         c[k++] = a[i]>b[j] ? b[j++] : a[i++];
      else
        c[k++] = a[j];

      if(j!=m)
        c[k++] = a[i]>b[j] ? b[j++] : a[i++];
      else 
        c[k++] = a[i];
    }

    //view the result :
    //================
        for(i = 0;i < (n+m);i++) { 
          printf("%d\n", c[i]); 
        }
   }
void main() {
    int size,size2;
    scanf("%d", &size);
    scanf("%d", &size2);
    int ar[size], br[size2],i;
    for(i = 0; i < size; i++)
      { 
        scanf("%d", &ar[i]); 
      }
    for(i = 0; i < size2; i++)
      { 
        scanf("%d", &br[i]); 
      }
    merge(ar, size, br, size2);

  }

1 个答案:

答案 0 :(得分:1)

k不应大于(m + n) - 1,因此更改while条件如下:

  while(k <= (m+n-1))