如何建立没有特定类型的堆排序类?

时间:2018-11-06 06:17:08

标签: java data-structures heapsort

这是要求我执行的程序。我已经使用特定类型(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()
}

1 个答案:

答案 0 :(得分:0)

您需要使用Java中的泛型来编写类型独立的程序。数组和泛型不能很好地配合使用。因此,可以考虑使用具有通用类型的ArrayList而不是裸数组。 ArrayList在内部仅是一个数组,它具有智能,可以分配一个更大的新数组,并在原始数组空间不足时将所有内容从原始数组复制到新数组。尽管它从程序员那里消除了所有这些复杂性,但确实会产生成本。因此,在将ArrayList与泛型一起使用来构建堆排序程序时,请确保使用ensureCapacity方法或适当的构造函数来指定期望的数组大小。最后,为了比较通用对象,您需要传递适当的Comparator实现。