Алгоритм кучи.Действительно базовый, о позициях массива 0 и 1. - PullRequest
2 голосов
/ 20 января 2012

куча - алгоритм сортировки Проблема, с которой я сталкиваюсь, заключается в следующем: входные алгоритмы n равны 2, они спроектированы таким образом, что их 1-я позиция (int i) массива и 2-я позиция (int j) сравнивают свои значения.

Проблема в том, что при этом игнорируется позиция 0 данного списка массивов. Я попытался уменьшить определенные значения, это создаст бесконечные циклы. Алгоритм является адаптацией псевдокода. Он не предназначен для запуска arraylist с 0. Я не могу придумать, как заново адаптировать этот алгоритм к порядку минимальной кучи.

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 Ответ

1 голос
/ 20 января 2012

попробуйте использовать vertexList.get(i-1) и vertexList.get(j-1) и vertexList.set(j-1, ...)

...