思路:
开两个数组,其中一个没有排序的,另一个是未排序的,
首先把第一个最小值元素放到最前面,然后只关注怎么把剩下元素的最小值移动到前面,不关注其他元素发生了什么变化。
选择排序依次把最小值放到前面,然后记录两个位置,一个是最小值的位置即在sort后的位置,一个是sort前原数组的位置,然后输出每次需要的前者和后者,然后呢,得到两者间的距离,就是后者向前者移动的距离。
代码:
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int i,j,k,m,n,t;
int ans[10001],a[10001];
int r[10001],l[10001],cha[10001];
for(i=0;i<10001;i++){
ans[i]=0;
a[i]=0;
r[i]=0;
cha[i]=0;
l[i]=0;
}
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=1;i<