Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.52 KB | None | 0 0
  1. public class HeapSort {
  2.     // Versickere das Element mit Index zuversickern in dem Teilfeld von Index
  3.     // links bis einschließlich Index rechts
  4.     public static void versickere(int[] array, int zuversickern, int links, int rechts) {
  5.         // TODO: Praktikum 9
  6.         int i = links;
  7.         int j = 0;
  8. //      boolean versickernErforderlich = true;
  9.         while (2 * i <= rechts) { // linkes Kind vorhanden
  10.             j = 2 * i;
  11.             if (j + 1 <= rechts && array[j] < array[j + 1]) // wenn rechtes kind vorhanden UND größer als linkes
  12.                 j++; // j = rechtes Kind
  13.             // j ist jetzt das größte Kind
  14.             if (zuversickern < array[j]) { // Wenn Knoten kleiner als größtes Kind
  15.                 array[i] = array[j]; // größtes Kind steigt auf Elternposition
  16.                 i = j; // zu versickernder Knoten jetzt an Stelle des größten Kindes
  17.             } else {
  18.                 array[i] = zuversickern;
  19.                 break;
  20. //              i = rechts;
  21. //              versickernErforderlich = false; // Bereits an Zielposition. Versickern nicht weiter nötig
  22.             }
  23.         }
  24. //      if (versickernErforderlich)
  25. //          array[i] = zuversickern;
  26.     }
  27.  
  28.     public static void heapsort(int[] array, int links, int rechts) {
  29.         // TODO: Praktikum 9
  30.        
  31.         // Array in Heap umwandeln
  32.         for(int i = (links + rechts + 1) / 2 - 1; i >= links; i--){
  33.             versickere(array, array[i], i, rechts); // startet versickern bei Knoten i
  34.         }
  35.        
  36.         int hilf = 0;
  37.         for(int i = rechts; i > links; i--){
  38.             hilf = array[links];
  39.             array[links] = array[i];
  40.             array[i] = hilf;
  41.             versickere(array, array[links], links, i-1); // sortierter bereich nicht übergeben
  42.         }
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement