您好我正在尝试使用三个数字改进的中位数来实现快速排序算法。我正在使用计数器来监控算法的交换次数。事实证明,未改进版本的交换数量远少于改进版本。以下代码有什么问题?感谢。
public static void improved_quicksort(int[] A,int l, int r){
if (r>l){
int i=improved_partition(A,l,r);
improved_quicksort(A,l,i-1);
improved_quicksort(A,i+1,r);
}
}
public static int improved_partition(int[] A,int l, int r){
int i=l;
int j=r;
//Median of three Method Starts here
int mid=(l+r)/2;
int x=median(l,mid,r);
int temp;
if (x==A[i]){
x=i;
}
else if (x==A[j]){
x=j;
}
else{
x=mid;
}
//Swapping of A[x] and A[r]
temp=A[x];
A[x]=A[r];
A[r]=temp;
int v=A[r];
while (i<j){
while (A[i]<v){
i++;
}
while ((i<j)&&(A[j]>=v)){
j--;
}
if (i<j){
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
else{
temp=A[i];
A[i]=A[r];
A[r]=temp;
}
}
return i;
}