Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Heapsort » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 7 Beiträge
Batista

Ich hab statt HeapSort stets Heapsort eingetippt, damit läuft es
eulerscheZahl

Da müsste ich mich auch erst einlesen, wie Heapsort arbeitet.

Bei der Fehlermeldung hast du vielleicht in eclipse etwas falsch eingestellt, der Kommandozeilencompiler hat keine Probleme.
Batista

Fehler: Hauptklasse Heapsort konnte nicht gefunden oder geladen werden


Hast du eine Idee, wieso es falsch sortiert?
eulerscheZahl

Die falsche Sortierung kann ich bestätigen, die Compilerwarnung nicht.
Genaue Fehlermeldung?
Batista

code:
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:
import java.util.Arrays;
public class HeapSort {
 public static class  SortUtil {

public static void vertausche ( int [] a, int x, int st) {
 int y = a[x];
 a[x]=a[st];
 a[st]= y;
}
}


 /** Array of int sortieren mittels HeapSort */
  public static void sort(int[] daten) {
    // Heap erzeugen (Bottom-Up)
    for (int i = daten.length / 2 - 1; i >= 0; --i) {
      korrigiere(daten, i, daten.length);
    }
    // Heap auslesen bis er leer ist:
    for (int i = daten.length - 1; i > 0; --i) {
      SortUtil.vertausche(daten, 0, i);
      korrigiere(daten, 0, i);
    }
  }

  /** Heap an der Position i korrigieren */
  public static void korrigiere(int[] daten, int i, int len) {

int a = i+1 , g;
while (2*i<= len) {
g=2*a;
if ( g< len)
if ( daten[g-1]>daten[g])
g++;
if ( daten[a-1]> daten[g-1]){
SortUtil.vertausche(daten, a-1, g-1);
g=a;
}
else
break;
}
}
  

public static void main (String [] args) {

int[] testarray =  {7, 9, 5, 6, 4, 0, 1, 1, 9, 8};
		sort(testarray);
                System.out.println(Arrays.toString(testarray));
	}
}



Eclipse führt den Code aus, aber es kommt das falsche Ergebnis.
Der complier meint die Main kann nicht geladen werden.
eulerscheZahl

code:
1:
SortUtil.sort(testarray);


Und der Code wird leserlicher, wenn man ihn formatiert. Die Standardprogramme (eclipse, NetBeans) haben das beide eingebaut. Ich habe es so eingestellt, dass der Code beim Speichern automatisch formatiert wird.
Batista Heapsort

code:
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:
import java.util.Arrays;
public class HeapSort {
 public static class  SortUtil {

public static void vertausche ( int [] a, int x, int st) {
 int y = a[x];
 a[x]=a[st];
 a[st]= y;
}



 /** Array of int sortieren mittels HeapSort */
  public static void sort(int[] daten) {
    // Heap erzeugen (Bottom-Up)
    for (int i = daten.length / 2 - 1; i >= 0; --i) {
      korrigiere(daten, i, daten.length);
    }
    // Heap auslesen bis er leer ist:
    for (int i = daten.length - 1; i > 0; --i) {
      SortUtil.vertausche(daten, 0, i);
      korrigiere(daten, 0, i);
    }
  }

  /** Heap an der Position i korrigieren */
  public static void korrigiere(int[] daten, int i, int len) {

int a = i+1 , g;
while (2*i<= len) {
g=2*a;
if ( g< len)
if ( daten[g-1]>daten[g])
g++;
if ( daten[a-1]> daten[g-1]){
SortUtil.vertausche(daten, a-1, g-1);
g=a;
}
else
break;
}
}
  
}
public static void main (String [] args) {

int[] testarray =  {-1,-2};
		sort(testarray);
                System.out.println(Arrays.toString(testarray));
	}
}




Fehler, bei der Ausführung"The method sort(int[]) is undefined for the type HeapSort".
Weshalb ist die Methode sort nicht definiert für int [] ?