题目大意:给n个数的一个序列,通过交换相邻的两个数使得这n个数按照从小到大的顺序排列。
Inversion index problem: count how many swaps are needed to make the list sorted. 使用冒泡排序解决。
1 #include <cstdio> 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen("in", "r", stdin); 7 #endif 8 int T; 9 scanf("%d", &T); 10 int a[60]; 11 while (T--) 12 { 13 int n; 14 scanf("%d", &n); 15 for (int i = 0; i < n; i++) 16 scanf("%d", &a[i]); 17 int swap = 0; 18 for (int i = n; i > 0; i--) 19 for (int j = 0; j+1 < i; j++) 20 if (a[j] > a[j+1]) 21 { 22 int t = a[j]; 23 a[j] = a[j+1]; 24 a[j+1] = t; 25 swap++; 26 } 27 printf("Optimal train swapping takes %d swaps. ", swap); 28 } 29 return 0; 30 }