算法4th-快速排序的切分

hswshya 2017-08-11 05:49:10
其实我就想问问这两种写法有什么区别。。

private static int partition(Comparable[] a,int l,int h)
{
int i=l;
int j=h;
int key=l;
while(true)
{
while(less(a[++i],a[key])) if(i==h) break;
while(less(a[key],a[j--])) if(j==l) break;
if(i>=j)
{
exchange(a,key,j);

return j;
}
exchange(a,i,j);
}


}




private static int partition(Comparable[] a,int l,int h)
{
int i=l;
int j=h+1;
int key=l;
while(true)
{
while(less(a[++i],a[key])) if(i==h) break;
while(less(a[key],a[--j])) if(j==l) break;
if(i>=j) break;

exchange(a,i,j);
}
exchange(a,key,j);
return j;
}



用第一种方法做切分操作就是错的,用第二种就是对的。。实在看不出来这两种方法有啥区别。。

谢谢
...全文
41 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧