这是要求我执行的程序。我已经使用特定类型(int)进行了此操作,但是使用对象类型进行了操作却很混乱。
public class HeapSort
{
private Object[] data;
private int partition;
HeapSort(Object[] data); // Class Constructor
HeapSort(int size); // Class Constructor
public Object[] sort() // Sorts the data
public void insert(Object item); // Insert in Heap
public Object extractMin(); // Remove from Heap
private void bubbleUp()
private void bubbleDown()
}
答案 0 :(得分:0)
您需要使用Java中的泛型来编写类型独立的程序。数组和泛型不能很好地配合使用。因此,可以考虑使用具有通用类型的ArrayList
而不是裸数组。 ArrayList
在内部仅是一个数组,它具有智能,可以分配一个更大的新数组,并在原始数组空间不足时将所有内容从原始数组复制到新数组。尽管它从程序员那里消除了所有这些复杂性,但确实会产生成本。因此,在将ArrayList
与泛型一起使用来构建堆排序程序时,请确保使用ensureCapacity
方法或适当的构造函数来指定期望的数组大小。最后,为了比较通用对象,您需要传递适当的Comparator
实现。