A[1 ... n] (1'den n'e) bir liste olsun. i < j  (i değeri j den küçük) iken A[i] > A[j] (A listesindeki i. (i inci) element j. (j inci) elementten büyük) ise bu duruma inversion (inversiyon, evirme) deniyor.

Hemen örnek ile tanımımızı destekleyelim.

A[2, 4, 1, 3, 5] şeklinde listemiz olsun.


A listesinde 3 tane inversion var. Bunlar (2, 1), (4, 1), (4, 3) çifleri.

Aşağıda da C'de yazılmış kodu bulunuyor.

int getInvCount(int arr[], int n)
{
  int inv_count = 0;
  int i, j;
  for(i = 0; i < n - 1; i++)
    for(j = i+1; j < n; j++)
      if(arr[i] > arr[j])
        inv_count++;
  return inv_count;
}
/* Driver progra to test above functions */
int main(int argv, char** args)
{
  int arr[] = {1, 20, 6, 4, 5};
  printf(" Number of inversions are %d \n", getInvCount(arr, 5));
  getchar();
  return 0;
}