insert将把项目插入堆中
//package com.nowjava; /* from NowJava.com */ public class Main { /** * insert will insert the item into the heap * * @param heap * is the heap into which item is to be inserted in * @param item * is the item to be inserted into heap * @param heapSize * the size of the heap * @return return the new heap */ public static Comparable[] insert(Comparable[] heap, Comparable item, int heapSize) { Comparable[] nHeap = new Comparable[heapSize + 2]; for (int i = 1; i <= heapSize; i++) { nHeap[i] = heap[i]; } nHeap[heapSize + 1] = item; buildHeap(nHeap, heapSize + 1); return nHeap; }/* 来自 时 代 J a v a - nowjava.com*/ /** * builds the heap using the heapify method * * @param heap * is the heap to be built * @param heapSize * is the size of the heap */ public static void buildHeap(Comparable[] heap, int heapSize) { for (int i = heapSize / 2; i > 0; i--) { heapify(heap, i, heapSize); } } /** * heapifies starting from a given node * * heapifying checks each child of the node and if it is greater than the * parent it swaps the two and heapifies the child * * @param heap * the heap to heapify in * @param index * the index of the node to heapify * @param heapSize * the size of the heap */ public static void heapify(Comparable[] heap, int index, int heapSize) { int leftIndex = 2 * index; int rightIndex = 2 * index + 1; if (leftIndex <= heapSize) { if (heap[leftIndex].compareTo(heap[index]) > 0) { swap(heap, index, leftIndex); heapify(heap, leftIndex, heapSize); } } if (rightIndex <= heapSize) { if (heap[rightIndex].compareTo(heap[index]) > 0) { swap(heap, index, rightIndex); heapify(heap, rightIndex, heapSize); } } }