import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class InversionCounter {
public static void main(String[] args) {
Scanner scanner = null;
try {
scanner = new Scanner(new File("src/IntegerArray.txt"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int [] nums = new int [100000];
int i = 0;
while(scanner.hasNextInt()){
nums[i++] = scanner.nextInt();
}
System.out.println(countInversions(nums));
}
public static int countInversions(int[] nums) {
int count = 0;
for (int i=0;i<nums.length-1;i++) {
for (int j=i+1;j<nums.length;j++) {
if (nums[i]>nums[j]) {
count++;
}
else {continue;}
}
}
return count;
}
}
Der obige Code liest 100.000 Ganzzahlen aus einer Datei und zählt die Invertierungen für diese Reihe von Ganzzahlen. Die Ausgabe ist wahrscheinlich eine sehr große Zahl wie 1198233847 und sollte definitiv positiv sein. Es wird jedoch eine negative Zahl wie -1887062008 ausgegeben. Die Programmlogik ist wahrscheinlich korrekt, da ich andere Algorithmen für denselben Zweck ausprobiert habe und die gleiche negative Zahl als Ausgabe erhielt. Ich vermute, dass das Ergebnis eine zu große positive Zahl ist und Java sie deshalb in eine negative Zahl umwandelt.