ソート プログラム (挿入ソート アルゴリズムの実装を使用して 100000 の整数をソートする) の Java コードで、配列内の要素が交換された回数を調べようとしています。sort() メソッドは静的であるため、これを静的変数として設定します。
ただし、プログラムの実行中に、整数の制限を超えて、最終的なカウントが負として表示されると思います。これを修正して数値的に正しいカウントを取得する方法があるはずですが、私はこれを理解することができません..助けてもらえますか?
public class InsertionSort {
private static int exchcount=0;
public static void exch(Comparable[] a, int i,int j){
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static int exchangeCount(){
return exchcount;
}
public static void sort(Comparable[] a){
int N = a.length;
for(int i=0; i< N;i++){
for(int j=i; j>0 && less(a[j],a[j-1]); j--){
exch(a,j,j-1);
exchcount++;
}
}
}
...
public static void main(String[] args) {
Integer[] a = RandomNumberArrayGenerator.generate(100000);
sort(a);
System.out.println("number of exchanges="+ exchangeCount());
}
これは与える
number of exchanges= -1799089211