✔ 最佳答案
寫了一個小時…參考一下吧
import java.util.Arrays;
public class aaa {
public static void main(String[] args) {
int[] a = { 61, 87, 80, 58, 40, 50, 20, 13, 71, 45 };
sort(a);
}
static int ok = 0;
static int times = 1;
private static int[] sort(int[] temp) {
int[] compare = temp.clone();
Arrays.sort(temp);
boolean flag = true;
for (int i = 0; i < temp.length; i++) {
if (compare[i] != temp[i]) {
flag = false;
}
}
if (flag) {
return null;
} else {
int min = 1000;
int oldMin = 1000;
int count = 0;// 紀錄最小值位置
for (int i = ok; i < compare.length; i++) {
min = Math.min(oldMin, compare[i]);
if (min != oldMin) {
count = i;
}
oldMin = min;
}
int old = compare[ok];
compare[ok++] = min;
compare[count] = old;
System.out.printf("\nafter pass %d :", times++);
for (int i : compare) {
System.out.print(i + " ");
}
return sort(compare);
}
}
}
2009-04-28 23:18:41 補充:
int[] a = { 61, 87, 80, 58, 40, 50, 20, 13, 71, 45 };
System.out.print("未排序前:");
for(int i : a){
System.out.print(i+" ");
}
sort(a);
System.out.print("\n排序後:");
for(int i : a){
System.out.print(i+" ");
}
2009-04-29 09:28:32 補充:
樓下的…for (i = 0; i < X.length; i++)用這樣子跑迴圈控制幾不是很好哦
而且你的結果
是從after pass0開始
結尾則是
after pass8:13--20--40--45--50--58--61--71--80--87--
after pass9:13--20--40--45--50--58--61--71--80--87--
跟版大有出入= =
2009-04-29 09:40:11 補充:
版大需要那些標記嗎,如果需要的話再開個版5點的即可我再幫你改,不用的話就這樣嚕~~
因為如果在這裡改會有字數的限制
2009-04-30 09:11:14 補充:
嗯…那你參考資料應該寫看書哦~
2009-04-30 09:16:26 補充:
嗯…寫的出來都算是很好
但是寫錯畢竟是事實
在學校上也能央求老師的同情而已不要算你錯
在工作上這個就成了一個很大的bug了