[gelöst]Bubbelsort aufsteigend absteigend sortieren
-
Hi,
ich habe habe 2 Methoden geschrieben, um eine verkettet Liste DESC bzw. ASC zu sortieren.
Allerdings sortiert die ASC Methode DESC.
Ich kann den Fehler leider nicht finden. Vllt. findet ihr den Fehler:void liste_sortieren_desc() { // Pruefen ob mehr als 1 Element vorhanden sind if ( size < 2 ) return; struct knoten *a = 0; struct knoten *b = 0; struct knoten *iterator = anfang; bool tausch = false; string temp; int temp2 = 0; // Bubblesort: Absteigend do { tausch = false; iterator = anfang; // Jedes Element in der Liste einmal ueberpruefen for ( int i=0; i<size-1; i++ ) { a = iterator; b = iterator->next; iterator = iterator->next; // Elemente miteinander vergleichen if ( a->info.get_name() < b->info.get_name() ) { // Elemente untereinander austauschen temp = b->info.get_name(); b->info.set_name(a->info.get_name()); a->info.set_name(temp); temp2 = b->info.get_x_koordinate(); b->info.set_x_koordinate(a->info.get_x_koordinate()); a->info.set_x_koordinate(temp2); temp2 = b->info.get_y_koordinate(); b->info.set_y_koordinate(a->info.get_y_koordinate()); a->info.set_y_koordinate(temp2); tausch = true; } } } while ( tausch ); // Solange Elemente getauscht wurden Bubblesort wiederholen }
void liste_sortieren_asc() { // Pruefen ob mehr als 1 Element vorhanden sind if ( size < 2 ) return; struct knoten *a = 0; struct knoten *b = 0; struct knoten *iterator = anfang; bool tausch = false; string temp; int temp2 = 0; // Bubblesort: Aufsteigend do { tausch = false; iterator = anfang; // Jedes Element in der Liste einmal ueberpruefen for ( int i=0; i<size-1; i++ ) { a = iterator; b = iterator->next; iterator = iterator->next; // Elemente miteinander vergleichen if ( a->info.get_name() > b->info.get_name() ) { // Elemente untereinander austauschen temp = b->info.get_name(); b->info.set_name(a->info.get_name()); a->info.set_name(temp); temp2 = b->info.get_x_koordinate(); b->info.set_x_koordinate(a->info.get_x_koordinate()); a->info.set_x_koordinate(temp2); temp2 = b->info.get_y_koordinate(); b->info.set_y_koordinate(a->info.get_y_koordinate()); a->info.set_y_koordinate(temp2); tausch = true; } } } while ( tausch ); // Solange Elemente getauscht wurden Bubblesort wiederholen }
Gruß
Dolphon
-
Ich glaub dir beim besten Willen nicht, dass du die Funktionen selbst geschrieben hast und jetzt nicht das Sortierkriterium nicht einstellen kannst
-
Michael E. schrieb:
Ich glaub dir beim besten Willen nicht, dass du die Funktionen selbst geschrieben hast und jetzt nicht das Sortierkriterium nicht einstellen kannst
lol. da hast du recht.
@Dolphon:
wenn ich richtig sehe, ist nur der vergleich oben > und unten <. sonst gar nix anders. und so soll es ja auch sein. wenn DESC klappt, klappt mit der änderung auch ASC.
anscheinend hast du aus versehen beim testen die falsche richtige funktion aufgerufen und deswegen das richtig falsche ergebnis. wenn ich richtig gesehen habe und nur > zu < verändert wurde, müßte es wie gewünscht funktieren.ich habe nicht geprüft, ob die DESC korrekt ist. die ist mir zu arg 80er-jahre.