[英]Arraylist insertion sort not working right?
我相當確定我算法正確並且代碼正確,但是我似乎無法弄清楚為什么它不能正確地對我的數字進行排序。
我正在嘗試使用arraylists創建插入排序程序,但是它似乎無法正常工作。
這是我的代碼:
import java.util.ArrayList;
public class NewInsertionSort {
public static void main(String[] args) {
ArrayList <Integer> Array = new ArrayList <Integer>();
Array.add(1);
Array.add(52);
Array.add(21);
Array.add(45);
Array.add(27);
Integer num;
Integer lock;
Integer num2;
for (num2 = 1; num2 < Array.size(); num2++) {
lock = Array.get(num2 - 1);
for (num = num2 - 1; (num >= 0) && (Array.get(num) < lock); num--){
Array.set(num+1, num);
}
lock = Array.get(num+1);
}
for(int z=0;z < Array.size(); z++){
System.out.println(Array.get(z));
}
}
}
如果有人可以提供任何建議和幫助,非常感謝,感謝您的幫助。
你怎么能說“代碼是正確的”,然后跟着“但我似乎無法弄清為什么它不能正確地對我的數字進行排序”。 ?
在這一行中,您將值更改為索引 ( num
):
Array.set(num+1, num);
您可能是說:
Array.set(num+1, Array.get(num));
在該內部for循環之后,您再也不會將存儲在lock
的值放回到數組中。
我嘗試不給您完整的答案,因為SO並不是在這里為您做功課。 祝好運!
在此行上,您將值更改為索引(數字):
Array.set(num + 1,num);
您可能是說:
Array.set(num + 1,Array.get(num));
是的, KompjoeFriek是正確的,在內部循環結束后,還必須使用鎖定值更新i + 1元素
所以它一定是這樣的:
Integer num;
Integer lock;
Integer num2;
for (num2 = 1; num2 < Array.size(); num2++) {
lock = Array.get(num2);
for (num = num2 - 1; (num >= 0) && (Array.get(num) < lock); num--) {
Array.set(num + 1, Array.get(num));
}
Array.set(num + 1, lock);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.