题意:求冒泡排序的交换次数,每次选出最小的数往前放
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int a[51],n,i,j,w,min,t,num;
scanf("%d",&t);
while(t--)
{
num = 0 ;
scanf("%d",&n);
for ( i = 1 ; i <=n ; i++)
cin>>a[i];
for ( i = 1 ; i <= n ; i++)
{
min = -1 ;
for ( j = i ; j <=n ; j++)
if ( a[j] < min || min == -1)
{
min = a[j];
w = j ;
}
for ( j = w ; j >= i+1 ; j--)
a[j] = a[j-1];
a[i] = min ;
num +=w-i;
}
printf("Optimal train swapping takes %d swaps.\n",num);
}
return 0;
}