我试图通过heapSort排序一个数组,它不工作

时间:2015-04-15 21:02:17

标签: java heap heapsort

出于某种原因,我的sortByDuration方法不允许我调用我的remove方法来打印我们的堆中的项目,因为它们被删除。这样做的目的只是为了对堆进行排序;我删除它并不重要。

public static Song[] sortByDuration(Song[] songs)//sorts the heap
{
    for(int i=size;i>0;i--)
        System.out.print(songs.remove()+" ");
    return songs;
}

这是我的删除方法

public Song remove()//removes
{
    Song retVal = peek();

    heap[0] = heap[size-1];
    heap[size-1] = null;
    size--;

    bubbleDown();

    return retVal;
}

错误发生在我的remove方法的print语句中 谢谢你们

1 个答案:

答案 0 :(得分:0)

您正尝试在对象数组上调用方法remove()。 Java中的数组没有这样的方法。

要使代码正常工作,您需要更改从songs数组中删除对象的方式。也许您想在SO中查看“Removing an element from an Array (Java)”问题。

您可能也错过了索引元素(仅访问i - 元素而不是整个数组),并且您要编写的语句是

        System.out.print(songs[i].remove()+" ");