思路:只有第一个前面的数字可以进行有序排序,因为注意只有第一个数字移动到后面之后才会对它进行冒泡排序,所以就相当于,如果最小数字后面的数有序,那么操作次数就是最小数字前所有数字的个数,如果无序,那就无法排序
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
const int N=2e5+10;
int t,n,a[N];
int main()
{
cin>>t;
while(t--)
{
scanf("%d",&n);
int mi=1e9+10,j=-1;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]<mi)
{
mi=a[i];//寻找最小值还有下标
j=i;
}
}
bool flag=true;
for(int i=j+1;i<n-1;i++)
{
if(a[i]>a[i+1])//如果无序
{
flag=false;
break;
}
}
if(flag)cout<<j<<endl;
else cout<<-1<<endl;
}
return 0;
}