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