| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 655 人关注过本帖
标题:快速排序的问题
取消只看楼主 加入收藏
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
快速排序的问题
快排假如我选第一个元素为参考点,则从后往前扫;快排假如我选最后一个元素为参考点,则从前往后扫;
快排假如我选第一个元素,最后一个元素,中间元素中的最小者为参考点(而且刚好是中间值时),是不是先往左,
还是先往右都没关系?
还有个问题就是:我选第一个元素为参考点,但我还是想从前往后扫,应该怎么处理?
谢谢大家,有代码做参考更好!!!
搜索更多相关主题的帖子: 元素 
2012-10-12 10:25
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:0 
我开始选的是第一个作为参考点,然后从左往右扫,排是排出来了,但是数值很多都相同的。但是从右往左时是ok的。思路嘛也是想
小的放左边,大的放右边。错误代码如下
程序代码:
void Quicksort(int b[], int low, int high)
{
    int i,j;
    int t;
    if(low<=high)     
    {
        t=b[low];
        i=low;
        j=high;
        while(i!=j)  
        { 
                while(i<j&&b[i]<=t)
                i++;
                if(j>i)
                {
                    b[j]=b[i];
                    j--;
                }
           
                while(i<j&&b[j]>=t)
                j--;
                if(j>i)
                {
                    b[i]=b[j];
                    i++;
                }
        }
        b[i]=t;  
        Quicksort(b,low,i-1);  
        Quicksort(b,i+1,high);
    }
}

2012-10-12 16:06
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:0 
回复 4楼 寒风中的细雨
我知道我错的原因,就是改为从右往左扫就可以了。选一个元素为参考点,从左往右的话,假如碰到满足条件的,把它放最后
就把原来最后的元素覆盖了,所以排序是对了,就是重复的数字很多。

也许,还真只能先从右往左吧。
2012-10-13 08:48
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:0 
回复 4楼 寒风中的细雨
误解你的了,原来你用了交换,谢谢!!
2012-10-13 08:49
快速回复:快速排序的问题
数据加载中...
 
   



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

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