| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:自己些的一个,快速排序,但是发现一个问题,求助高手帮忙解决
取消只看楼主 加入收藏
peanut_acer
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2009-8-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
自己些的一个,快速排序,但是发现一个问题,求助高手帮忙解决
这是我些的一个快速排序,但是发现如果出现相同数就进入死循环了..... 高手帮忙指出错误所在....  谢谢
#include <stdio.h>
#define N 10
void change(int *p,int *q)
{
    int z;
    z=*p;
    *p=*q;
    *q=z;
}

int fast(int * b,int left,int right)
{
    int l=left,r=right;
    int point=left;
    while(l<r)
    {
        while(b[point]<b[r]) r--;
        change(&b[point],&b[r]);
        point=r;
        while(b[point]>b[l]) l++;
        change(&b[point],&b[l]);
        point=l;
        if(r==l)
        {
            fast(b,left,l);
            fast(b,r+1,right);
            
        }
    }
}


int outs(int *a,int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    printf("\n");    
}

int randin(int *p,int n)
{
    int i;
    srand(time(NULL));
    for(i=0;i<n;i++)
    {
        p[i]=rand()%100;
    }
}    

int main()
{
    int a[N];
    randin(a,N);    
    fast(a,0,N-1);
    outs(a,N);
}

fast.c.rar (749 Bytes)
搜索更多相关主题的帖子: 求改 
2009-08-12 10:32
peanut_acer
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2009-8-12
收藏
得分:0 
帮我看下 改成这样为什么不可以 ....  谢谢了
 
int fast(int * b,int left,int right)
{
    int l=left,r=right;
    int point=left;
    while(l<r)
    {
        while(b[point]<=b[r]) r--;
        change(&b[point],&b[r]);
        point=r;
        while(b[point]>=b[l]) l++;
        change(&b[point],&b[l]);
        point=l;
        if(r==l)
        {
            fast(b,left,l);
            fast(b,r+1,right);
            
        }
    }
}
2009-08-12 20:22
peanut_acer
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2009-8-12
收藏
得分:0 
这个是一个随机取种函数....   srand(seed);
取得的数作为 rand()随机取数的种子.....
2009-08-13 16:02
快速回复:自己些的一个,快速排序,但是发现一个问题,求助高手帮忙解决
数据加载中...
 
   



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

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