Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Heap.java:
- public class Heap <T extends Comparable<T>> {
- public T[] element;
- public Heap(T[] elem) {
- element = elem;
- endIndex = element.length-1;
- }
- private int aktuellerIndex = 0;
- private int endIndex;
- private int root = 0;
- public void heapify() {
- heapify(element, aktuellerIndex, endIndex);
- }
- // Heapify
- public void heapify(T[] element, int aktuellerIndex,int endIndex,int root){
- int largest;
- int left = aktuellerIndex + (root - aktuellerIndex)*2 + 1;
- int right = left + 1;
- if(left <= endIndex && element[left].compareTo(element[root]) > 0)
- largest = left;
- else
- largest = right;
- if(right <= endIndex && element[right].compareTo(element[largest]) > 0)
- largest = right;
- if(largest != root)
- swap(root, largest);
- heapify(element, aktuellerIndex, endIndex,largest);
- }
- // Swap
- public void swap(int root, int largest){
- T temp = element[largest];
- element[largest] = element[root];
- element[root] = temp;
- }
- // Erstellt den Heap
- public void heapify(T[] element, int aktuellerIndex, int endIndex) {
- int length = endIndex - aktuellerIndex +1;
- for(int i = aktuellerIndex + length/2 - 1; i>=aktuellerIndex; i--) {
- heapify(element, aktuellerIndex, endIndex, i);
- }
- }
- // Heapsort
- public void heapSort(T[] element, int aktuellerIndex, int endIndex) {
- for(int i = endIndex; i> aktuellerIndex; i--) {
- swap(aktuellerIndex, i);
- heapify(element, aktuellerIndex, i-1, aktuellerIndex);
- }
- }
- // Print
- void printHeap() {
- for(int i=0; i < element.length; i++) {
- System.out.println(element[i]);
- }
- }
- }
- TestKlasse.java:
- public class TestKlasse {
- public static void main(String [] args) {
- //List<Integer> list = new ArrayList<Integer>(Arrays.asList( new Integer[]{1,2,3,4,5,6,7}));
- Integer[] test;
- test = new Integer[3];
- test[0] = new Integer(1);
- test[1] = new Integer(2);
- test[2] = new Integer(3);
- Heap a = new Heap(test);
- a.printHeap();
- a.heapify();
- a.printHeap();
- }
- }
- Errors:
- [lalala]$ java TestKlasse
- 1
- 2
- 3
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
- at Heap.swap(Heap.java:36)
- at Heap.heapify(Heap.java:30)
- at Heap.heapify(Heap.java:31)
- at Heap.heapify(Heap.java:45)
- at Heap.heapify(Heap.java:15)
- at TestKlasse.main(TestKlasse.java:17)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement