| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:请教有关快速排序的问题
只看楼主 加入收藏
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
结帖率:95.65%
收藏
已结贴  问题点数:20 回复次数:7 
请教有关快速排序的问题
void QuickSort(int R[],int s,int t)
{
    int temp,low,high;
    low=s;high=t;
    temp=R[s];
    while(low<high)
    {
        while(low<high&&R[high]>temp)
            high--;
            R[low]=R[high];
        while(low<high&&R[low]<temp)
            low++;
            R[high]=R[low];
    }
    R[low]=temp;        
QuickSort(R,s,low-1);
QuickSort(R,low+1,t);
}
大家帮忙看看这个程序有什么问题,我的怎么不能得到正确的排序。多谢啦!
2011-06-23 20:05
Heart→M鹏
Rank: 2
等 级:论坛游民
帖 子:80
专家分:94
注 册:2011-5-13
收藏
得分:5 
程序代码:
void QuickSort(int R[],int low,int high)
{
    int temp;
    R[0]=R[low];
    temp=R[low].key;
    while(low<high)
    {
        while(low<high&&R[high].key>=temp)
            --high;
            R[low]=R[high];
        while(low<high&&R[low].key<=temp)
            ++low;
            R[high]=R[low];
    }
    R[low]=R[0];       
    return low;
}
这样可以不?
2011-06-23 21:38
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
没怎么看明白,还可以不用递归的吗?
还有void函数还可以有返回值的吗?
2011-06-23 22:04
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
-----

[ 本帖最后由 voidx 于 2011-6-24 20:18 编辑 ]
2011-06-23 22:53
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
回复 4楼 voidx
递归一直就没怎么理解透。你的意思是一趟排序没有问题,递归出了问题吗?
我的想法是一趟排序后分成两部分,分别递归。为什么一次递归后数组元素会被覆盖掉呢?
多谢说明白点,刚好借这机会好好理解下递归。
2011-06-24 09:42
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:5 
程序代码:
// right = ar元素个数 - 1
void quickSort(int *ar, int left, int right)
{
    int temp, i, j;

    if (left >= right || !ar)
        return;
    
    temp = ar[left];
    i = left;
    j = right;

    while (i < j) {
        while (i < j && ar[j] >= temp)
            --j;
        ar[i] = ar[j];
        
        while (i < j && ar[i] <= temp)
            ++i;
        ar[j] = ar[i];
    }
    ar[i] = temp;
    quickSort(ar, left, i-1);
    quickSort(ar, i+1, right);
}

—>〉Sun〈<—
2011-06-24 20:10
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:0 
回复 6楼 cosdos
我的程序是什么问题?多谢赐教。
2011-06-24 20:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
我回去看看快拍去  这几天考试忘了

                                         
===========深入<----------------->浅出============
2011-06-24 20:45
快速回复:请教有关快速排序的问题
数据加载中...
 
   



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

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