public class Qsort{
//使key后面的数组元素大于key,前面的元素小于key,最后返回key的下标
public static int cen(int a[],int start,int end) {
int key;
key=a[start];
while(start<end) {
while(start<end&&a[end]>=key)
end--;
if(start<end&&start!=end)
{
a[start]^=a[end];
a[end]^=a[start];
a[start]^=a[end];
}
while(start<end&&a[start]<=key)
start++;
if(start<end)
{
a[start]^=a[end];
a[end]^=a[start];
a[start]^=a[end];
}
}
a[start]=key;
return start;
}
public static void sort(int a[],int start,int end) {
int pos=0;
if(start<end) {
pos=cen( a,start,end);
sort(a,pos+1,end);//key左边递归同样的操作
sort(a,start,pos-1);//key右边递归同样的操作
}
}
public static void main(String args[]) {
int a[]=new int [] {1,9,7,3,4};
sort(a,0,a.length-1);
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
Java快速排序
最新推荐文章于 2023-03-15 17:14:19 发布