tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
2289
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    GaanSan GaanSan ist offline Mitglied
    Registriert seit
    Dec 2008
    Beiträge
    10
    Hallo, ich versuche mich gerade mit Heap-Sort anzufreunden aber irgendwie verstehe ich nicht alles und komme einfach nicht weiter.

    Kann mir vielleicht jemand helfen, und sagen wie ich einen Heap aus gespeicherten Daten (z.B: daten[12, 7, 1, 22, 3, ...] ) erstelle?

    Danke im Vorraus

    Gz Gaan
     

  2. #2
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Ich bin zwar nicht der große Sortier Experte, aber schau doch mal hier drauf
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.885
    Blog-Einträge
    29
    Hallo,

    schau mal hier:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    
    package de.tutorials;
     
    import java.util.Arrays;
     
    public class HeapSortExample {
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            Heap heap = new Heap(57, 16, 62,1000, 30, 80, 7, 21, 78, 41);
            System.out.println(heap);
            System.out.println(heap.sort());
     
        }
     
        static class Heap {
     
            int[] a;
     
            public Heap(int... values) {
                this.a = values;
            }
     
            public Heap sort() {
     
                for (int i = a.length / 2; i >= 0; i--) {
                    sink(i, a.length-1);
                }
     
                for (int m = a.length - 1; m > 0; m--) {
     
                    int tmp = a[0];
                    a[0] = a[m];
                    a[m] = tmp;
     
                    sink(0, m - 1);
                }
     
                return this;
            }
     
            private void sink(int i, int t) {
                int j = 2 * i;
                int k = j + 1;
     
                if (j <= t) {
                    if (a[i] >= a[j]) {
                        j = i;
                    }
                    
                    if (k <= t) {
                        if (a[k] > a[j]) {
                            j = k;
                        }
                    }
     
                    if (i != j) {
     
                        int tmp = a[i];
                        a[i] = a[j];
                        a[j] = tmp;
     
                        sink(j, t);
                    }
                }
            }
     
            @Override
            public String toString() {
                return Arrays.toString(a);
            }
     
        }
     
    }

    Ausgabe:
    Code :
    1
    2
    
    [57, 16, 62, 1000, 30, 80, 7, 21, 78, 41]
    [7, 16, 21, 30, 41, 57, 62, 78, 80, 1000]

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 13.08.10, 14:06
  2. Binary Insertion Sort vs. Insertion Sort
    Von Dolphon im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 05.01.09, 19:47
  3. Heap Corruption
    Von NBOne im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 14.01.08, 12:27
  4. sort
    Von -Ener- im Forum PHP
    Antworten: 3
    Letzter Beitrag: 12.04.05, 01:22
  5. Heap erstellen - wie?
    Von RealScorp im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 12.11.04, 10:17