// Inversion for an array indicates how far (or close) the array is from being sorted.
// If the array is sorted then the Inversion is 0.
#include <iostream>
void printInversionPair(int arr[], int size) {
if (size <= 1) {
return;
}
bool sorted = true;
for (int i = 0; i < size; i++) {
for (int j = i + 1; j < size; j++) {
if (arr[i] > arr[j]) {
sorted = false;
std::cout << arr[i] << ", " << arr[j] << "\n";
}
}
}
if (sorted)
std::cout << "sorted";
}
int main() {
int arr1[] = {1, 7, 2, 5, 4, 3, 9, 8};
printInversionPair(arr1, sizeof(arr1) / sizeof(arr1[0]));
int arr2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
printInversionPair(arr2, sizeof(arr2) / sizeof(arr2[0]));
return 0;
}
/*
run:
7, 2
7, 5
7, 4
7, 3
5, 4
5, 3
4, 3
9, 8
sorted
*/