(排序算法的应用7.3.8)UVA 299 Train Swapping(使用冒泡排序回计算逆序对数)

(排序算法的应用7.3.8)UVA 299 Train Swapping(使用冒泡排序来计算逆序对数)
/*
 * UVA_299.cpp
 *
 *  Created on: 2013年11月3日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>

using namespace std;

const int maxn = 55;

int main() {
	int a[maxn];

	int t;
	scanf("%d", &t);

	while (t--) {
		int n;
		scanf("%d", &n);

		int i;
		for (i = 0; i < n; ++i) {
			scanf("%d", &a[i]);
		}

		int j;
		int ans = 0;
		for(i = 0 ; i < n ; ++i){//冒泡排序
			for(j = i+1; j < n ; ++j){
				if(a[i] > a[j]){
					int temp = a[i];
					a[i] = a[j];
					a[j] = temp;

					ans++;//逆序对数+1
				}
			}
		}

		printf("Optimal train swapping takes %d swaps.\n", ans);

	}

	return 0;
}