2016-07-02 15 views
-3

これは、挿入ソートの正しい実装ですか?バブルソートと挿入ソートとデータ構造の新しさの間で混乱します。これはInsertion Sortの正しい実装ですか?

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

は、コードレビューサイトではありません。 google – redFIVE

+0

@redFIVEで簡単に見つけられるさまざまな並べ替えアルゴリズムの無数の例があります。レビューを受けることができるサイトを提案できます。お気軽に – newbie

+0

http://www.eecs.wsu.edu/~ananth/CptS223/Lectures/ sorting.pdfはソートやその他のアルゴリズムの詳細についてはこれを参照してください。 –

答えて

1

これはあなたの2つのネストされたループが適切に配列を横断していない、正しいとは思えません。外側のループは[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; 
      } 
関連する問題