BPS #2: Wörter sortieren - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #2: Wörter sortieren - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, die Zeit ist 'rum!
Das war die Aufgabe Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In drei Tagen am Sonntag dem 13. wird die Musterlösung nach editiert und die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzBasic: [AUSKLAPPEN] Dim words$(9) ; Das Array zum speichern der Strings wird angelegt |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am So, Feb 13, 2011 19:02, insgesamt 2-mal bearbeitet
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich habe mich der Aufgabe mal angenommen und zwei verschiedene Möglichkeiten verfasst. Beides sind ein simple BubbleSorts. Laufzeitverhalten ist O(n^2), also quadratisch. Das heisst, wenn ich die Anzahl Inputs verdopple, vervierfacht sich die nötige Arbeit. Natürlich gibt es bessere Methoden für die Sortierung. Das optimale Maximum das man gefunden hat war O(n log n), das findet man in einem Mergesort und einigen anderen. Aber hei, Aufgabe war es, ein Maximum von 10 Worten zu sortieren, meiner Meinung nach ist der Rekursionsaufwand eines Mergesorts bei solchen Zahlen grösser als die doppelte Bubblesort Schleife :> Aber ich kann mich täuschen, und ich werde sicher korrigiert werden, falls dies so sein sollte. Methode 1: BlitzBasic: [AUSKLAPPEN] Const MAX_COUNT = 10 Diese Methode verwandelt die Worte in Float-Zahlen, die dann einfach über <> verglichen werden können. Der Vorteil dabei ist, dass der Vergleich einfach ist. Der Nachteil liegt in dem erhöhten Rechenaufwand (die Umwandlung von A zu 0.01 usw). Was bei langen Worten passieren könnte ist, dass die Genauigkeit des Floats nichtmehr ausreicht, um das Wort darzustellen, dann kann es vorkommen, dass zwei Worte nicht richtig sortiert werden. So alles in Allem ist die Idee eigentlich doof :> Aber ich fand sie witzig genug um ausprobiert zu werden, so there you go. BlitzBasic: [AUSKLAPPEN]
Methode zwei ist (afaik?) ziemlich standard-mässig. Für den Vergleich wird eine [i]Compare-Funktion aufgerufen, die 1, 0, -1 zurückliefert (je nachdem ob grösser, gleich, kleiner). Dabei wird der ASCII-Code jedes Buchstabens verglichen. Dabei muss man aufpassen, dass A und a zwei unterschiedliche Codes haben, alphabetisch aber gleich (?) sortiert werden sollten. Deshalb habe ich einfach alles Upper-Cased (sprich: asdf -> ASDF, Captain Capslock style). Der Vergleich bricht ab, falls ein Buchstaben grösser/kleiner ist als ein anderer. Sind sie durchs ganze Wort gleich (asdf <-> asdfa) wird die Wortlänge verglichen. Das längere Wort ist kleiner (ich hoffe das ist richtig? Sonst müsste man das noch kurz ändern und Return Sgn( n2 - n1 ) anpassen..). Soviel zu meinen Ansätzen. Ich freue mich auf Ideen und Einfälle anderer. MfG, Darth |
||
Diese Signatur ist leer. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für deine Teilname darth. Vielleicht findet sich ja nochmal jemand mit einer eigenen Lösung - oder wurde die Aufgabe als zu schwer empfunden? Rückmeldungen helfen uns beim ausarbeiten der Aufgaben.
Die Musterlösung findet sich im Eingangspost. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group