我正在尝试通过 heapSort 对数组进行排序,但它不起作用

I am trying to sort an array via heapSort and its not working

出于某种原因,我的 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()。 Java中的数组没有这样的方法。

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

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

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