堆排序算法我遇到的问题是,这个算法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);
}发布于 2012-01-20 07:21:23
尝试使用vertexList.get(i-1)、vertexList.get(j-1)和vertexList.set(j-1, ...)
https://stackoverflow.com/questions/8934527
复制相似问题