我正在进行合并排序,我知道当其中一个列表出现时我遇到了问题 比较时为空。然后它将打印空值。 帮助我处理条件..我无法正确使用条件语句。 在此先感谢.. :))
#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);
}
答案 0 :(得分:1)
k不应大于(m + n) - 1,因此更改while条件如下:
while(k <= (m+n-1))