題目描述
小新是一家公司的員工,每個員工都有一個編號。每天上班時,老板都讓員工排成一個隊伍。但是,每次老板都對隊伍的順序不滿意,於是老板重新編排新的隊伍順序,然後讓員工按順序排好。老板有特別要求,隊伍每次只能將其中一個人移動到隊頭。聰明的小新很快想到最少移動次數使得隊伍的順序跟老板指定的順序一樣。愚蠢的老板不清楚小新是怎麼做到的,聰明的你編寫程序告訴ta。
輸入
第一行是T(T<=10),代表數據的組數。
對於每組數據,第1行是一個整數n(2<=n<=30),代表員工的數量。第2行有n個數,代表員工一開始的隊伍順序的編號。第3行有n個數,代表老板要求的隊伍順序的編號。員工的編號為s(1<=s<=n),且不會重復。
輸出
輸出最少的移動次數。
樣例輸入
2
4
2 1 3 4
1 2 3 4
3
2 1 3
3 1 2
樣例輸出
1
2
書本上都有的選擇排序。
public class ChoiceSort {
public static void _choiceSort(Integer[] a) {
if (a == null || a.length <= 0) {
return;
}
for (int i = 0; i < a.length; i++) {
int min = i; /* 將當前下標定義為最小值下標 */
for (int j = i + 1; j < a.length; j++) {
if (a[min] > a[j]) { /* 如果有小於當前最小值的關鍵字 */
min = j; /* 將此關鍵字的下標賦值給min */
}
}
if (i != min) {/* 若min不等於i,說明找到最小值,交換 */
int tmp = a[min];
a[min] = a[i];
a[i] = tmp;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] list={49,38,65,97,76,13,27,14,10};
//快速排序
/* QuicSort qs=new QuicSort();
qs.quick(list);*/
//冒泡排序
/* BubbleSort bs=new BubbleSort();
bs.bubble(list);*/
//選擇排序
ChoiceSort._choiceSort(list);
for(int i=0;i<list.length;i++){
System.out.print(list[i]+" ");
}
System.out.println();
}