クイックソートアルゴリズムで比較とスワップの回数を数えたいと思います。 これは私のコードです:印刷変数が正常に動作しません - Java
public ArrayList<Integer> quickSort(ArrayList<Integer> data , int low , int high , int comparisons ,int swaps){
ArrayList<Integer> sortedData = new ArrayList<Integer>();
if(low< high) {
int pivotIndex = low; // Assume first element is the pivot
int pivot = data.get(low);// The pivot value
data.set(pivotIndex, data.get(high));// Swap pivot with last item
data.set(high, pivot);
int i = low - 1;
int j = high;
do {
do {i++;} while (data.get(i)< pivot);
do {j--;} while (j>=0 && data.get(j)> pivot);
comparisons ++ ;
if (i < j) {
int temp = data.get(i);
data.set(i, data.get(j));
swaps ++ ;
data.set(j, temp);
swaps ++ ;
}
} while (i < j);
data.set(high, data.get(i)); // Put the pivot back in the middle
swaps ++ ;
data.set(i, pivot);
swaps ++ ;
quickSort(data, low, i - 1 , comparisons , swaps);// Recursive sort left list
quickSort(data, i + 1 ,high ,comparisons , swaps);// Recursive sort right list
}
System.out.println("Quick S swaps : " + swaps);
System.out.println("Quick S comparisons : " + comparisons);
sortedData = data;
return sortedData ;
}
私はループや再帰関数の後にprint文を入れますが、出力は各ループとのスワップとの比較です! 特定の地点まで増加してから、その地点に戻るために減少します!
Quick S swaps : 2
Quick S comparisons : 1
Quick S swaps : 4
Quick S comparisons : 2
Quick S swaps : 6
Quick S comparisons : 3
Quick S swaps : 8
Quick S comparisons : 4
Quick S swaps : 10
Quick S comparisons : 5
..
..
..
..
..
Quick S swaps : 2986
Quick S comparisons : 1493
Quick S swaps : 2988
Quick S comparisons : 1494
Quick S swaps : 2990
Quick S comparisons : 1495
Quick S swaps : 2992
Quick S comparisons : 1496
Quick S swaps : 2994
Quick S comparisons : 1497
Quick S swaps : 2998
Quick S comparisons : 1499
Quick S swaps : 2998
Quick S comparisons : 1499
Quick S swaps : 2998
Quick S comparisons : 1499
Quick S swaps : 2994
Quick S comparisons : 1497
Quick S swaps : 2992
Quick S comparisons : 1496
Quick S swaps : 2990
Quick S comparisons : 1495
Quick S swaps : 2988
Quick S comparisons : 1494
Quick S swaps : 2986
Quick S comparisons : 1493
..
..
..
..
..
Quick S swaps : 12
Quick S comparisons : 6
Quick S swaps : 10
Quick S comparisons : 5
Quick S swaps : 8
Quick S comparisons : 4
Quick S swaps : 6
Quick S comparisons : 3
Quick S swaps : 4
Quick S comparisons : 2
Quick S swaps : 2
Quick S comparisons : 1
なぜこれが起こりますか?どうすれば修正できますか?
または可変カウンタを通過し、それらをインクリメントします。 –