java 快排有一小段代码不理解求解释

Zero_Abyss 2017-07-24 04:59:58
先上课本的代码
public class KuaiPai {
public static void main(String[] args) {
int[] s={9,8,7,5,6,7,4,4,1};
sort(s);
for(int i:s){
System.out.print(i);
}
}
public static void sort(int [] s){
sort(s,0,s.length-1);
}
public static void sort(int []s,int first,int last){
if(last>first){
int index=part(s,first,last);
sort(s,first,index-1);
sort(s,index+1,last);
}
}
public static int part(int[] s,int first,int last){
int key=s[first];
int low=first+1;
int high=last;
while(high>low){
while(low<=high&&s[low]<=key){
low++;
}
while(low<=high&&s[high]>key)
high--;
if(high>low){
int temp=s[low];
s[low]=s[high];
s[high]=temp;
}
}
//这一段的意义在哪?
while(high>first&&s[high]>=key){
high--;
}

if(key>s[high]){
s[first]=s[high];
s[high]=key;
return high;
}else{
return first;
}
}
}

while(high>first&&s[high]>=key){
high--;
}
这段代码有什么用?前面的while已经把该排的顺序排好了,而且我也尝试去掉这段代码,测试了多组数据也没有什么问题。
所以请问这段代码在这的实际作用?
...全文
104 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zero_Abyss 2017-07-24
  • 打赏
  • 举报
回复
好吧,是我测试不到位!已解决。 主要用途是出现重复的数字时候选择第一个,不然有多个相同的数字时候就出现结果错误。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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