Autor |
Nachricht |
CptCrunch
|
Verfasst: Sa 17. Mär 2012, 05:30 |
|
Moderator |
|
Registriert: So 22. Mai 2011, 22:00 Beiträge: 253
|
So, da hier sicher ein paar Leute mit Skills sind, und ich ein bissl wenig Zeit hab die Aufgabe zu lösen, vll ist ja jemand so nett und hilft mir ein bisschen =) Zitat: Entwicklen Sie ein Sortierverfahren in detailierten Pseudocode, das abwechselnd aufwärts und abwärts durch eine aufsteigend zu sortierende Zahlenfolge läuft und dabei jeweils Paare direkt benachbarter Zahlen vergleicht. Jedes Paar, das in der falschen Reihenfolge steht, wird dabei vertauscht.
Achten Sie darauf, dass Programm untern den genannten Bedingungen so effizient wie möglich zu gestalten d.h. unter anderem, dass Elemente, die sicher schon an ihrem endgültigen Platz angekommen sind, im weiteren Verlauf des Algorithmus nicht mehr betrachte werden sollen. Ich hab jetzt auf die schnelle (wirklich auf die schnelle !) ne Lösung gesucht und bin dabei auf folgendes gekommen: Code: //A[l]....A[r] ist Zahlenfolge
solange (Sg < r-1) { i = l; if(Sg = gerade || 0) { if(A[i].key > A.[i+i].key) { Vertausche A[i] mit A[i+1]; Sd++; Sg++; } } else // ungerade { if(A[i].key < A[i-1]) { Vertausche A[i] mit A[i-1]; Sd++; Sg++; } } if((i+1) == r) { r--; Sd=0; Sg++; }
if((i-1) == l) { l--; Sd=0; Sg++; } if[((i+1)==r || ((i-1)==(Sg > 0))) && Sd == 0] { "fertig sortiert" } if(Sg = gerade oder 0) { i++; } else //ungerade { i--; } }
Das ganze ist im Java Bereich, weil wir hauptsächlich in Java programmieren. Für ein Feedback, Verbesserungsvorschläge etc wär ich euch dankbar. Der Code muss denk ich auf jeden Fall noch überarbeitet werden, nur mir fehlt die Zeit und wär deshalb für jegliche Unterstützung dankbar
_________________ I'm the god damned captain. Your argument is invalid !
|
|
Nach oben |
|
|
Anzeige
|
Verfasst: Sa 17. Mär 2012, 05:30 |
|
|
|
Nach oben |
|
|
xRamses
|
Verfasst: Sa 17. Mär 2012, 11:25 |
|
Administrator |
|
Registriert: So 14. Aug 2011, 20:04 Beiträge: 657
|
Zitat: das abwechselnd aufwärts und abwärts durch eine aufsteigend zu sortierende Zahlenfolge läuft Heißt das er muss immer Anfang -> Ende Ende -> Anfang laufen oder kann zwischendurch auch mal die Richtung wechseln?
_________________ Freiheit ist kein Privileg, es ist ein Recht. Es wird Zeit dieses Recht einzufordern.
Nichts ist wahr. Alles ist erlaubt.
|
|
Nach oben |
|
|
CptCrunch
|
Verfasst: Sa 17. Mär 2012, 13:35 |
|
Moderator |
|
Registriert: So 22. Mai 2011, 22:00 Beiträge: 253
|
Anfang -> Ende, Ende -> Anfang
_________________ I'm the god damned captain. Your argument is invalid !
|
|
Nach oben |
|
|
nexusfail
|
Verfasst: Sa 17. Mär 2012, 21:03 |
|
Registriert: Mi 6. Jul 2011, 20:04 Beiträge: 1144
|
ich nix machen mit java aber vl hab ich ja was gefunden Arrays aufsteigernd sortieren : Arrays.sort(deinArray);puh jetzt kann ich schon paar sätze in java na aber da ich hab noch was gutes gefunden mit kurzen einfacheren Befehlen ::: da such dir raus was du brauchst ....ich mag nimmer das merk ich mir sonst noch alles
_________________ Бори се и освојите борбу против мониторинга Borba i pobeda protiv monitoringa Cr0w is the best <3
|
|
Nach oben |
|
|
xRamses
|
Verfasst: So 18. Mär 2012, 11:01 |
|
Administrator |
|
Registriert: So 14. Aug 2011, 20:04 Beiträge: 657
|
Das Problem ist ja das man die Beschränkung Anfang->Ende, Ende->Anfang hat wenn man die Richtung wechseln könnte bevor man am Ende bzw Anfang angekommen ist dann würde mir auch ein effektiver Algorithmus einfallen aber so ist das nicht so einfach.
_________________ Freiheit ist kein Privileg, es ist ein Recht. Es wird Zeit dieses Recht einzufordern.
Nichts ist wahr. Alles ist erlaubt.
|
|
Nach oben |
|
|
VorTeX_eXtrem
|
Verfasst: Mo 19. Mär 2012, 13:24 |
|
Registriert: Di 15. Nov 2011, 10:49 Beiträge: 44
|
Gar nicht so einfach. Um ehrlich zu sein, ich hab noch nie solange in Java gesehen, ehrlich nicht das soll Code: while() { .. } sein?^^ ich schau mal ob mir da etwas einfällt.
|
|
Nach oben |
|
|
Karv
|
Verfasst: Mo 19. Mär 2012, 14:35 |
|
Registriert: Fr 8. Jul 2011, 13:30 Beiträge: 347 Wohnort: https://www.accountkiller.com/removal-requested
|
shuffle()... Niemand hat gesagt, WIE es sortiert sein soll... ^_^
_________________ https://www.accountkiller.com/removal-requestedБороться и победить в борьбе против мониторинга! Kjempe og vinne kamp mot overvåkning! Pugnare et pugna vincere versus circumdare custodiere!
|
|
Nach oben |
|
|
VorTeX_eXtrem
|
Verfasst: Mo 19. Mär 2012, 14:40 |
|
Registriert: Di 15. Nov 2011, 10:49 Beiträge: 44
|
Lol doch, es steht in der Angabe aufsteigend :D
|
|
Nach oben |
|
|
xRamses
|
Verfasst: Mo 19. Mär 2012, 16:10 |
|
Administrator |
|
Registriert: So 14. Aug 2011, 20:04 Beiträge: 657
|
So da ich heute etwas Zeit zur Verfügung habe habe ich mir das ganze nochmal angeschaut doch etwas irritiert mich: Zitat: Achten Sie darauf, dass Programm untern den genannten Bedingungen so effizient wie möglich zu gestalten d.h. unter anderem, dass Elemente, die sicher schon an ihrem endgültigen Platz angekommen sind, im weiteren Verlauf des Algorithmus nicht mehr betrachte werden sollen. Wenn ich Elemente nicht mehr betrachten soll wenn sie bereits richtig sortiert sind wie soll ich dann abwechselnd aufsteigend und absteigend durch das Array laufen? Ich meine mein Grundgedanke wäre links anzufangen und immer zu überprüfen ob die beiden Zahlen richtig sortiert sind wenn ja dann weiter nach rechts wenn nein dann die beiden vertauschen und weiter nach links (und wenn man schon ganz links ist natürlich stattdessen nach rechts) Bin mir aber nicht sicher ob das so durchgehen würde.
_________________ Freiheit ist kein Privileg, es ist ein Recht. Es wird Zeit dieses Recht einzufordern.
Nichts ist wahr. Alles ist erlaubt.
|
|
Nach oben |
|
|
Karv
|
Verfasst: Mo 19. Mär 2012, 16:26 |
|
Registriert: Fr 8. Jul 2011, 13:30 Beiträge: 347 Wohnort: https://www.accountkiller.com/removal-requested
|
Nja, läufst du mal nach oben durch und mal nach unten, ists noch lange nicht fertig sortiert... ich denke, es soll so lang nach oben laufen, bis was nicht passt, dann tauschen und rückwärts laufen, überprüfen, ob das vorhergehende eventuell auch größer ist, und so lange tauschen, bis es richtig einsortiert ist, um danach zum vorherigen Punkt zurückzuspringen und dort weiter zu machen...
_________________ https://www.accountkiller.com/removal-requestedБороться и победить в борьбе против мониторинга! Kjempe og vinne kamp mot overvåkning! Pugnare et pugna vincere versus circumdare custodiere!
|
|
Nach oben |
|
|