https://blog.youkuaiyun.com/nrsc272420199/article/details/82587933这篇文章说的贼好,代码有点问题 20行的0改成low就可以了
package cn.hc;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class AppTest
{
@Test
public void shouldAnswerWithTrue()
{
int[] arr=new int[5000];
for(int i=0;i<5000;i++){
arr[i] = (int)(Math.random()*10000);
}
System.out.println(System.currentTimeMillis());
quackSort(arr,0,arr.length-1);
System.out.println(System.currentTimeMillis());
for (int i : arr) {
System.out.print(i+" ");
}
}
public void quackSort(int[] a,int low,int hign){
if(low>=hign){
return;
}
int index=getIndex(a,low,hign);
quackSort(a,low,index-1);
quackSort(a,index+1,hign);
}
public int getIndex(int[] a,int low,int hign){
int flat=a[low];
while(low<hign){
while(low<hign && a[hign]>=flat){
hign--;
}
a[low]=a[hign];
while(low<hign && a[low]<=flat){
low++;
}
a[hign]=a[low];
}
a[low]=flat;
return low;
}
}