注册 登录
编程论坛 C++教室

快速排序的递归调用

enjoytaosky 发布于 2013-03-31 22:29, 718 次点击
各位想问下快速排序算法的问题。
问题出现在这段代码上,
说s没有定义
void Quicksort(int *a,int l,int r){
    int s;
if(l<r)
s=Partion(a,l,r);//s是分裂的位置,partion()是一个分区函数
Quicksort(a,l,s-1);
Quicksort(a,s+1,r);
}
编译器报错说我的
Run_time Check Failure-The varial's is being used without being defined.
是不是递归调用的时间出了问题啊。
求解答,谢谢
5 回复
#2
azzbcc2013-04-01 08:13
l >= r 时,s木有初值

Quicksort(a,l,s-1);
Quicksort(a,s+1,r);

会出错
#3
enjoytaosky2013-04-01 21:50
回复 2楼 azzbcc
不是好像是给了啊,那个partion函数就是给初值的嘛
#4
azzbcc2013-04-01 21:55
以下是引用enjoytaosky在2013-4-1 21:50:43的发言:

不是好像是给了啊,那个partion函数就是给初值的嘛

那个条件不成立时,不久木有初值么
#5
enjoytaosky2013-04-01 22:42
哦啊啊,了解了。但是我设置断点的时候,第一次递归时间有好像没错,但在后没就说没有值
。大概的问题好像就是这了。慢慢分析去了我。
#6
邓士林2013-04-02 22:50
二楼正解
1