我很确定我的算法是正确的,代码是正确的,但我似乎无法弄清楚为什么它没有正确排序我的数字。
我正在尝试使用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));
}
}
}
如果有任何人有任何建议和帮助,非常感谢,所有的帮助表示赞赏。
答案 0 :(得分:0)
你怎么能说“代码是正确的”并跟随“,但我似乎无法弄清楚为什么它没有正确排序我的数字。”?< / p>
在此行中,您将值更改为索引(num
):
Array.set(num+1, num);
你可能意味着:
Array.set(num+1, Array.get(num));
在那个内部for循环之后,你永远不会把你在lock
中存储的值放回到数组中。
我试图不给你一个完整的答案,因为你不是要为你做功课。祝你好运!
答案 1 :(得分:0)
在此行中,您将值更改为索引(num):
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);
}