我有一個簡單的方法來用Quicksort對int數組進行排序。我不知道如何正確計算互換和比較的次數,因爲算法是遞歸的:如何計算Java中的Quicksort中的comaprisons和swaps?
public void quicksort(int tablica[], int x, int y) {
int i,j,v,temp;
i=x;
j=y;
int swaps=0;
int comparisons=0;
v=tablica[(x+y)/2];
while (i<=j)
{
while (tablica [i] <v)
{
i++;
}
while (tablica [j] >v)
{
j--;
}
if (i<=j){
temp = tablica [i];
tablica [i]=tablica[j];
tablica [j] = temp;
i++;
j--;
swaps++;
}
comparisons++;
}
if (x<j)
quicksort(tablica,x,j);
if (i<y)
quicksort(tablica,i,y);
System.out.println("Comparisons: " + comparisons);
System.out.println("Swaps: " + swaps);
}
小(10個整數)陣列運行它返回:
Comparisons: 1
Swaps: 1
Comparisons: 1
Swaps: 1
Comparisons: 2
Swaps: 2
Comparisons: 1
Swaps: 1
Comparisons: 1
Swaps: 1
Comparisons: 1
Swaps: 1
Comparisons: 2
Swaps: 1
Comparisons: 4
Swaps: 4
怎麼做正常嗎?
例如,您可以將變量定義爲字段。 – Koekje