您的位置:程序门 -> java -> j2se / 基础类



求助


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求助
发表于:2007-03-19 20:31:09 楼主
请大家帮我看看这个快速排序算法哪错了?
class   shiyan1   {
int   quickonepass(int   r[],int   l,int   h){
int   i,j;
i=l;
j=h;
r[0]=r[i];
do{
while((r[j]> =r[0])&&(j> i))j--;
if(j> i){
r[i]=r[j];
i++;
}
while((r[i] <=r[0])&&(j> i))i++;
if(i <j){
r[j]=r[i];
j--;
}

}while(i==j);
r[i]=r[0];
return(i);



}

void   quicksort(int   r[],   int   l,int   h){
int   k;
if(l <h){
k=quickonepass(r,l,h);
quicksort(r,1,k-1);
quicksort(r,k+1,h);


}


}

}
public   class     shiyan{
public   static   void   main(string[]   args){
int[]   a={0,3,5,4,2,7,5,9,0};
shiyan1   bb=new   shiyan1();
bb.quicksort(a,   1,   8);
for(int   i=1;i <a.length;i++){
system.out.print(a[i]+ " ");

}

}



}
发表于:2007-03-19 20:37:211楼 得分:0
用得了这么复杂吗?

最重要的是变量作用舆问题

最后打印的还是main里的数组!

根本没有打印出排序结果!
发表于:2007-03-19 20:43:572楼 得分:0
看的头都晕了,又是递归又是循环嵌套
发表于:2007-03-19 22:07:293楼 得分:0
我没有给注解可能看起比较吃亏,quickonepass是完成一趟快速排序,利用   quicksort来递归调用
quickonepass函数直到每个小段只包含一个数为止.后面在搞个类来实验数组a
发表于:2007-03-21 09:46:074楼 得分:0
java,asp,.net,技术讨论群14401742,现在缺管理员,欢迎高手加入。
发表于:2007-03-21 10:42:465楼 得分:0
该回复于2007-12-28 11:24:40被管理员或版主删除


快速检索

最新资讯
热门点击