堆算法。真的很基本,关于数组位置0和1。

时间:2012-01-19 22:49:48

标签: java algorithm sorting arraylist heap

堆 - 排序算法 我遇到的问题是这个,这个算法n输入是2,这是为了使数组的第一个位置(int i)和第二个位置(int j)的值进行比较而设计的。

问题是这会忽略给定数组列表的0位置。我试过减少某些值,这将创建无限循环。该算法是伪代码的改编。它不是设计为从0运行arraylist。我想不出如何重新调整这个算法到一个体面的最小堆排序。

public static void input( ArrayList<input> vertexList, int n )
{
    int j=n; 
    int i=n/2; 
    input object = vertexList.get(n);

    while ((i>0) && vertexList.get(i)> object){

        vertexList.set(j, vertexList.get(i));

        j = i;
        i = i/2;
    }

    vertexList.set(j, object);

}

1 个答案:

答案 0 :(得分:1)

尝试使用vertexList.get(i-1)vertexList.get(j-1)以及vertexList.set(j-1, ...)