在我的Java代碼中,對於一個排序程序(它使用我的insertionsort算法對100000個整數進行排序),我試圖找出多少次數組交換。因爲sort()方法是靜態的,所以我將它設置爲靜態變量。如何在超出限制時打印Java int值
但是,在程序運行期間的某個時候,我認爲整數限制被超過,最終計數顯示爲負數。必須有一種方法來糾正這種情況,並獲得數字上正確的計數,但我無法弄清楚這一點......你能幫忙嗎?
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
改爲使用長類型? –
使用BitInteger .. – Maroun
這個詞是「溢出」 – leonbloy