c语言编写归并排序出现的问题,高手解答,我写的这个程序有出错提示,不知道怎么改,高手帮我修正一下! 10

intcombine(inta[],intleft,intmid,intright){intb1[];intb2[];intc[];inti=0,j=0,k=0;intl... int combine(int a[],int left,int mid,int right)
{
int b1[];
int b2[];
int c[];
int i=0,j=0,k=0;
int l;
for(l=0;l<mid+1;l++)
b1[l]=a[l];
for(l=0;l<right-mid;l++)
b2[l]=a[mid+1+l];
sizeof(c)=sizeof(b1+b2);
while(left<right)
{
while(sizeof(b1)>0&&sizeof(b2)>0)
{
if(b1[i]<b2[i])
c[k++]=b1[i++];
else
c[k++]=b2[j++];
}
while(sizeof(b1>0))
c[k++]=b1[i++];
while(sizeof(b2)>0)
c[k++]=b2[j++];
}
return (c[right+1]);
}
int guib(int a[],int left,int right)
{
int mid;
if(left<right)
{
mid=(left+right)/2;
guib(a,left,mid);
guib(a,mid+1,right);
combine(a,left,mid,right);
}
}
main()
{
int i;
int a[8]={3,6,8,2,7,9,4,1};
guib(a,0,7);
for(i=0;i<8;i++)
printf("%d ",a[i]);
printf("\n");
}
展开
 我来答
sqfasd11
2012-08-09 · TA获得超过120个赞
知道答主
回答量:78
采纳率:52%
帮助的人:55.7万
展开全部
void merge(int a[], int start, int middle, int end)
{
int n = end - start + 1;
int *tmp = malloc(sizeof(int)*n);
int i,j;
int k = 0;
for(i=start,j=middle+1;i<=middle&&j<=end;){
if(a[i]<=a[j]){
tmp[k++] = a[i++];
}else{
tmp[k++] = a[j++];
}
}
if(i<=middle) memcpy(tmp+k, a+i, (n-k) * sizeof(int));
if(j<=end) memcpy(tmp+k, a+j, (n-k) * sizeof(int));
memcpy(a+start, tmp, n * sizeof(int));
free(tmp);
}
void merge_sort_core(int a[], int start, int end)
{
if(start<end){
int middle = (start+end)/2;
merge_sort_core(a, start, middle);
merge_sort_core(a, middle+1, end);
merge(a, start, middle, end);
}
}
诸葛墨槿
2012-08-08 · 贡献了超过104个回答
知道答主
回答量:104
采纳率:0%
帮助的人:29.2万
展开全部
你定义数组都定义错了(没有指明大小,后面的没看):
int b1[];
int b2[];
int c[];
可以采用以下方式定义:
int b1[2];

int b1[] = {1,2,3,4,5};
更多追问追答
追问
这是小问题,后面的你看一下,整个程序你看一下,帮我纠正一下。
追答
1.书写错误:sizeof(b1>0)
2.语法错误:sizeof(c)=sizeof(b1+b2);
sizeof(c)不能作为左值。
3.如果数组定义int b1[2];那么sizeof(b1)大小是不变的,不能作为while的边界条件使用

暂时发现这些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天王盖地虎Xxxx
2012-08-08 · 超过20用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:38.3万
展开全部
出什么错?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
当彼此都不追狗
2012-08-12
知道答主
回答量:24
采纳率:0%
帮助的人:3.6万
展开全部
路过看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式