class Qsort{
public static void swap(int[] a,int i,int j)
{
int tmp=a[i];a[i]=a[j];a[j]=tmp;
} public static int partition(int[] a,int low,int high){ int pivot; //pivot暂存变量 pivot=a[low];
while(low<high) //high-low>1 才排序
{
while(low<high&&a[low]<a[high]) high--;
if(low<high)
{
swap(a,low,high);
low++;
}
while(low<high&&a[low]<a[high]) low++;
if(low<high)
{
swap(a,low,high);
high--;
}
}
a[low]=pivot;
returen low;
}public static void quicksort(int[] a,int low,int high){
int pivot;
if (low<high){
pivot=partition(a,low,high);
quicksort(a,low,pivot-1);
quicksort(a,pivot+1,high);
}
}public static void main(String[] args){
int[] a1;
a1=new int[20];
for(int j=0;j<a1.length;j++){
a1[j]=(int)(a1.length*Math.random());
System.out.print(a[i]);
}
System.out.println("*********");
quicksort(a1,0,a1.length);
for(int j=0;j<a1.length;j++){
System.out.print(a[i]);
}
}
}
-----------------------------------------
大概情况就是这样了,我没有上机测试,有小错误也可能!
public static void swap(int[] a,int i,int j)
{
int tmp=a[i];a[i]=a[j];a[j]=tmp;
} public static int partition(int[] a,int low,int high){ int pivot; //pivot暂存变量 pivot=a[low];
while(low<high) //high-low>1 才排序
{
while(low<high&&a[low]<a[high]) high--;
if(low<high)
{
swap(a,low,high);
low++;
}
while(low<high&&a[low]<a[high]) low++;
if(low<high)
{
swap(a,low,high);
high--;
}
}
a[low]=pivot;
returen low;
}public static void quicksort(int[] a,int low,int high){
int pivot;
if (low<high){
pivot=partition(a,low,high);
quicksort(a,low,pivot-1);
quicksort(a,pivot+1,high);
}
}public static void main(String[] args){
int[] a1;
a1=new int[20];
for(int j=0;j<a1.length;j++){
a1[j]=(int)(a1.length*Math.random());
System.out.print(a[i]);
}
System.out.println("*********");
quicksort(a1,0,a1.length);
for(int j=0;j<a1.length;j++){
System.out.print(a[i]);
}
}
}
-----------------------------------------
大概情况就是这样了,我没有上机测试,有小错误也可能!
public static void main(String[] args){
……
quicksort(a1,0,a1.length);//改成quicksort(a1,0,a1.length-1);就可以了,下标越界
……
}