2016-07-02 44 views
-3

這是插入排序的正確實現。我對氣泡排序和插入排序和數據結構的新問題感到困惑。這是插入排序的正確實現嗎?

import java.util.Scanner; 
import java.util.ArrayList; 
public class InsertionSort{ 
    public static void main(String args[]){ 
     Scanner reader = new Scanner(System.in); 
     ArrayList<Integer> numbers = new ArrayList<Integer>(); 
     System.out.println("Start entering the numbers to sort: "); 
     while(reader.hasNextInt()){ 
      numbers.add(reader.nextInt()); 
     } 
     for(int i=0; i<numbers.size(); i++){ 
      for(int j=i; j>0; j--){ 
       if(numbers.get(j) < numbers.get(j-1)){ 
        int temp = numbers.get(j); 
        numbers.set(j, numbers.get(j-1)); 
        numbers.set(j-1, temp); 
       } 
      } 
     } 
     System.out.print("Sorted list: "); 
     for(int i=0; i<numbers.size(); i++){ 
      System.out.print(" "+numbers.get(i)); 
     } 
     System.out.println(); 
    } 
} 
+0

stackoverflow不是代碼評論網站。有很多很容易找到的各種排序算法的例子谷歌 – redFIVE

+0

@redFIVE你能建議一個網站,我可以得到它審查..謝謝 – newbie

+0

http://www.eecs.wsu.edu/~ananth/CptS223/Lectures/ sorting.pdf在排序和其他算法中參考這個更多細節。 –

回答

1

這似乎並不正確,你的兩個嵌套循環不正確遍歷數組。外循環應該從[0, N-1)開始,而內循環應該從(M, N)開始,其中M是外循環的變量。我會建議查看氣泡排序和插入排序。

HackerRank有一個問題,您可以通過打印命令驗證您的程序。

0
for(int i=1; i<numbers.size(); i++){ 
       int item = numbers[i]; 
       int j = i; 
       while(j>0 && numbers[j-1]>item){ 
        numbers[j-1] = numbers[j]; 
        j--; 
       } 
    numbers[j] = item; 
      }