【发布时间】:2016-09-29 07:02:00
【问题描述】:
我正在处理合并排序,我知道当列表之一出现时我遇到了问题 比较时为空..然后它将在此之后打印空值.. 帮我处理条件..我无法正确使用条件语句。 提前谢谢..:)
#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);
}
【问题讨论】:
-
欢迎来到 Stack Overflow!听起来您可能需要学习如何使用调试器来逐步执行代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs.
-
您正在将
merge函数中的数据(这是不必要的复杂)排序到本地数组c[]。一旦该函数返回,它与 anything 没有任何关系。传入的两个数组保持不变,最终未排序。
标签: c sorting data-structures mergesort