插入排序错了

时间:2015-11-29 18:41:21

标签: java arraylist insertion

我有一个充满随机整数的arraylist。我试图使用插入排序进行排序,然后在屏幕上打印它们。一切正常,但插入排序...不确定有什么问题,有人可以看看它,发现出了什么问题......谢谢。

public static  ArrayList<Integer> oh = new ArrayList<Integer>();

public static ArrayList<Integer> gen2()
{
    ArrayList<Integer> oh = new ArrayList<Integer>();
    Random random = new Random();
    for (int i = 0; i < 100; i++)
    {
        oh.add(random.nextInt());
    }
    return oh;
}

public static  ArrayList<Integer> insertionSort(ArrayList<Integer>oh) {
    int i, j;
    for (i = 1; i < oh.size(); i++) {
        Integer tmp = oh.get(i);
        j = i;
        while ((j > 0) && (oh.get(j - 1).intValue() > tmp.intValue())) {
            oh.set(j, oh.get(j - 1));
            j--;
        }
        oh.set(j, tmp);
    }
    return oh;
}

public static void main(String[] args)
{
    System.out.println("Original List:");
    System.out.println(gen2());
    System.out.println("Sorted Arraylist:");
    System.out.print(insertionSort(oh));
}

1 个答案:

答案 0 :(得分:2)

你正在影响哦变量。

在gen2方法中,转换此

ArrayList<Integer> oh = new ArrayList<Integer>();

到此

oh = new ArrayList<Integer>();

它不起作用的原因是因为你声明了一个新的ArrayList(名为oh),其范围只是在gen2方法中。删除ArrayList会导致将新的ArrayList分配给原始类哦参考。