堆 - 排序算法 我遇到的问题是这个,这个算法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);
}
答案 0 :(得分:1)
尝试使用vertexList.get(i-1)
和vertexList.get(j-1)
以及vertexList.set(j-1, ...)