Array50. Дан целочисленный массив $$A$$ размера $$N$$, являющийся перестановкой (определение перестановки дано в задании Array49). Найти количество инверсий в данной перестановке, то есть таких пар элементов $$A_I$$ и $$A_J$$, в которых большее число находится слева от меньшего: $$A_I \gt A_J$$ при $$I \lt J$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <stdio.h> int main(void) { int a[10]; int n; printf("N: "); scanf("%i",&n); int i; for (i=0; i<n; ++i){ printf("a[%i] : ",i+1); scanf("%i",&a[i]); } int num=0,i2; for (i=0; i<n-1;++i){ for (i2=i+1; i2<n;++i2){ if (a[i]>a[i2]){ num++; } } } printf("%i \n",num); return 0; } |
Другие задачи из раздела Array можно посмотреть здесь.
Комментарии: