2016-07-02 17 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; 
      }