标题:大神们帮帮我我也不知道哪错了,就是无法正常的排出序来,这是快排的
只看楼主
long138033
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-28
结帖率:50%
已结贴  问题点数:20 回复次数:6 
大神们帮帮我我也不知道哪错了,就是无法正常的排出序来,这是快排的
#include <stdio.h>
int partions(int l[],int low,int high)
{
int prvotkey=l[low];
l[0]=l[low];
   
while (low<high)
{
    while (low<high&&l[high]>=prvotkey)
         --high;
     l[low++]=l[high];
     while (low<high&&l[low]<=prvotkey)
         ++low;
     l[high--]=l[low];      
}

l[low]=l[0];
 
if(low<high)
{
partions(l,low,high+1);
partions(l,prvotkey-1,high);
}

}


void main()
{
int a[11]={0,2,32,43,23,45,36,57,14,27,39},c,b;
partions(a,1,10);
for ( b=1;b<11;b++)
printf("\n");

for( c=1;c<11;c++)
printf("%3d",a[c]);

}

我也不知道那错了,就是无法正常的排出序来
这是快排的
搜索更多相关主题的帖子: 正常 include 
2013-01-23 19:38
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
得分:0 
好像挺难得    也没看出来
2013-01-23 20:35
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:5 
partions(l,low,high+1);
这个函数不是这样用的吧?
楼主找找这个函数的原型

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-23 21:02
ksddah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:135
注 册:2012-12-11
得分:10 
你的程序错得蛮多的,对照看下吧
程序代码:
#include <stdio.h>
void partions(int l[],int head,int tail)
{
    int low=head;
    int high=tail;
    int prvotkey=l[low];
     //l[0]=l[low];
    if(low<high)
    {
    while (low!=high)   
         {
             while (low<high&&l[high]>=prvotkey)
                    --high;
             if(low<high)          
                    l[low++]=l[high];
             while (low<high&&l[low]<=prvotkey) 
                     ++low;
             if(low<high)         
                    l[high--]=l[low];      
         }

     //l[low]=l[0];
     l[low]=prvotkey;         
     partions(l,head,low-1);   
     partions(l,low+1,tail); 
    }
}

void main()
{
int a[11]={0,2,32,43,23,45,36,57,14,27,39},c,b;
partions(a,1,10);
//for ( b=1;b<11;b++)
//printf("\n");

for( c=0;c<11;c++)
printf("%-3d",a[c]);

}

2013-01-23 23:26
long138033
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-28
得分:0 
!语法没错算法有错误,我是想找到此程序错在哪,为什么会错,这样我的读代码能力又提升了,谢谢各位
2013-01-24 10:36
xingzhian
Rank: 2
等 级:论坛游民
帖 子:14
专家分:54
注 册:2011-3-22
得分:5 
我想,这句代码最不合理:partions(l,prvotkey-1,high);
既然是:int prvotkey=l[low];
那么它为什么总作为一个下标处理?
2013-01-24 15:39
此夜望月
Rank: 2
等 级:论坛游民
帖 子:55
专家分:43
注 册:2012-12-29
得分:0 
其实这种分治法比较容易把人弄得晕头转向的,楼主没有熟练这种方法,所以在使用的时候错误的地方挺多的,,,,说实话,错误太多感觉不好修改,要改就只有重新给你做一个。。。
2013-01-24 16:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-397420-1-1.html




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

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