在我的排序程序的 Java 代码中(它使用我的插入排序算法实现对 100000 个整数进行排序),我试图找出数组中的元素交换了多少次。我将其设置为静态变量,因为 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