简单排序题,求交换的最少次数
#include <stdio.h>
int count,n;
int carriage[60];
int find(int x)
{
for(int i=1;i<=n;i++)
if(carriage[i]==x)
return i;
return -1;
}
void move(int x,int y)
{
for(int i=y-1;i>=x;i--)
{
carriage[i+1]=carriage[i];
count++;
}
}
int main()
{
int m;
scanf("%d",&m);
for(int cas=1;cas<=m;cas++)
{
count=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&carriage[i]);
for(int i=1;i<n;i++)
{
int pos=find(i);
if(pos!=i)
{
move(i,pos);
carriage[i]=i;
}
}
printf("Optimal train swapping takes %d swaps.\n",count);
}
return 0;
}