| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:这个递归排序的程序编译正确,结果怎么不对,求高手帮忙看下。
取消只看楼主 加入收藏
z627724978
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-2-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
这个递归排序的程序编译正确,结果怎么不对,求高手帮忙看下。
程序代码:
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
void  wrt(int key[], int sz);
void  mergesort(int key[], int n);
void  merge(int a[], int b[], int c[], int m, int n);


void merge(int a[],int b[],int c[], int m,int n)
{
    int i=0,j=0,k=0;
    while(i<m && j<n)
        if(a[i] < b[i])
            c[k++]=a[i++];
        else
            c[k++]=b[j++];
        while (i<m)
            c[k++]=a[i++];
        while (j<n)
            c[k++] = b[j++];
}
void mergesort(int key[],int n)
{
    int j,k,m,*w;
    for(m = 1; m < n; m *= 2)
        ;
    if (n < m)
    {
        printf("ERROR:Array size not apower of 2 - bye!\n");
        exit(1);
    }
    w = calloc(n, sizeof(int));
    assert(w != NULL);
    for (k = 1; k < n; k *=2)
    {
        for(j = 0; j < n - k; j += 2*k)
            merge(key + j, key + j + k, w + j, k, k);

        for (j = 0; j < n; ++j)
            key[j] = w[j];
    }



    free(w);
}


void wrt(int key[], int sz)
{
    int  i;
    for (i = 0; i <sz; ++i)
        printf("%4d%s",key[i],((i < sz - 1) ? "" : "\n"));
}
int main(void)
{
    int sz,key[]={ 4, 3, 6, 67,5,8,7,9};
    sz=sizeof(key) / sizeof(int);
    printf("Before mergesort:\n");
    wrt(key,sz);
    mergesort(key,sz);
    printf("After mergesort:\n");
    wrt(key,sz);
    return 0;
}
搜索更多相关主题的帖子: color 
2013-03-03 00:40
z627724978
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-2-28
收藏
得分:0 
调试结果不对啊
2013-03-03 00:48
z627724978
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-2-28
收藏
得分:0 
应该是从小到大排列的
2013-03-03 00:48
z627724978
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-2-28
收藏
得分:0 
但是把数字增加到16 个就又不行了。不知道哪的问题
2013-03-03 01:32
z627724978
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-2-28
收藏
得分:0 
回复 9楼 shmilyflf
我在书上整下来的,运行后结果错误,不知道原因在哪里
2013-03-04 13:48
z627724978
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-2-28
收藏
得分:0 
是归并 不是递归,抱歉啊
2013-03-04 13:49
快速回复:这个递归排序的程序编译正确,结果怎么不对,求高手帮忙看下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved