这是插入排序的正确实现吗?

时间:2016-07-02 08:01:28

标签: java data-structures

这是插入排序的正确实现吗?我对Bubble Sort和Insertion排序以及Data结构的新功能感到困惑。

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

2 个答案:

答案 0 :(得分:1)

这似乎不正确,你的两个嵌套循环不能正确遍历数组。你的外循环应该来自[0, N-1),而你的内循环应该来自(M, N),其中M是外循环的变量。我建议检查冒泡排序和插入排序。

HackerRank存在此问题,您可以通过打印命令验证程序。

答案 1 :(得分: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;
            }