解题思路:当两个元素只交换一次时,次数最少。从数组第一个元素开始交换,寻找与元素值相同的另一个元素的位置,若不是相邻位置,计算出距离即此次的交换次数并交换;再以第三个元素为标志,重复上述步骤,直至遍历完整个数组。
import java.util.;
public class Main{
public static void main(String arg[]){
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int m=2n;
int[] a=new int[m];
int count=0,x=0,y=0,num=0;
for(int i=0;i<m;i++){
a[i]=scan.nextInt();
}
for(int i=0;i<m;i+=2){
x=i;
y=searchArray(a,a[i],i);
if(y!=x+1) {
num=y-x-1;
}
else {
num=0;
}
count+=num;
swapArray(a,x+1,y);
}
System.out.println(count);
}
public static int searchArray(int[] array,int flag,int i) {
int location=0;
i++;
for(;i<array.length;i++) {
if(array[i]==flag) {
location=i;
}
}
return location;
}
public static void swapArray(int[] array,int x,int y) {
int flag=array[y];
for(int i=y;i>x;i--) {
array[i]=array[i-1];
}
array[x]=flag;
}
}