我正在尝试通过 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()+" ");
出于某种原因,我的 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()+" ");