Я пытаюсь подсчитать количество инверсий с учетом набора данных.Это хорошо работает для небольших наборов данных, но как только я выбираю один из нескольких тысяч, инвертированное значение получается отрицательным.Я не вижу, как это возможно, кто-нибудь знает, почему это происходит / потенциальные исправления?
Например, при заданном наборе данных 5 (-6, 1, 15, 8, 10) инвертироватьзначение равно 2. Тем не менее, для более длинного набора данных я получаю -2032112517 инверсий.
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
System.out.println("Enter length of array: ");
int input= userInput.nextInt();
int[] values = new int[input];
for (int i = 0; i < values.length; i++)
{
values[i] = userInput.nextInt();
}
insertionSort(values);
}
public static void insertionSort(int values[ ]) {
int arrlen = values.length;
int invert = 0;
for (int i = 0; i < arrlen; i++) {
int currentValue = values[i];
int compare = i - 1;
while (compare >= 0 && values[compare] > currentValue) {
invert++;
values[compare + 1] = values[compare];
compare = compare - 1;
}
values[compare + 1] = currentValue;
}
System.out.println("INVERT IS: " +invert);
}
}