簡體   English   中英

Arraylist插入排序不起作用嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM