2016-01-25 24 views
0

我很確定我的算法是正確的,代碼是正確的,但我似乎無法弄清楚爲什麼它不能正確排序我的數字。Arraylist插入排序不正常?

我試圖做一個與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

'Integer'應是'int',它應該是array而不是'Array' – Meinkraft

+0

@TheProgrammerG但是我解決了它,它仍然只是打印無序列表... –

+0

使用LinkedList而不是ArrayList。 – eg04lt3r

回答

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); 
    } 
0

How do you say 「code is correct」 and follow it with 「但我似乎無法弄清楚爲什麼它不能正確排序我的號碼。」

在這行你更改爲指數num):

Array.set(num+1, num); 

你大概的意思是:

Array.set(num+1, Array.get(num)); 

而在這之後內的循環,你永遠不把你存儲在lock中的值放回數組中。

我試圖不給你一個完整的答案,因爲這裏不是爲你做你的功課。祝你好運!