WinFuture-Forum.de: Sortierer - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Sortierer Einige Sortieralgorithmen zum Testen...


#1 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. Februar 2006 - 00:26

nabend zusammen,

ich habe mich mehr oder weniger freiwillig mit Objekt-Orientierung und Sortieralgorithmen in C# beschäftigt.

Herausgekommen ist folgendes Programm:
Angehängtes Bild: sorter.png
Es wird das .NET Framework 2.0 benötigt

Das Prinzip ist ganz einfach: Man fügt einige Wörter in die Liste ein, wählt ein Sortieralgorithmus aus und klickt auf sortieren.
Hier einige Features der Applikation:
  • Mehrere Sortieralgorithmen
  • Auf- und Abwärts Sortierung
  • Anzeige der Dauer des Sortiervorgangs
Und als Bonus mein überhaupt nicht sinnfreier Sortieralgorithmus "Randomsort". Der "schüttelt" das Array so lange durch, bis es sortiert ist :D

Ein paar Worte zum Quellcode will ich natürlich auch verlieren.
Zu allererst ein Klassendiagramm, damit ihr euch das etwas bildlich vorstellen könnt.
Angehängtes Bild: klassendiagramm.png
- Klasse Counter ist für die Berechnung der Zeit des Sortiervorgangs zuständig
- MainForm stellt das Hauptfenster dar
- WaitWindow das Fenster, das während des Sortiervorgangs eingeblendet wird

Als nächstes existiert die abstrakte Klasse Sorter, die unter anderem die abstrakte Methode internalSort besitzt.
Nun müssen die Unterklassen, wie Bubbler oder Quicker, die die jeweiligen Sortieralgorithmen repräsentieren, diese Methode überschreiben.
Und warum das ganze? Ganz einfach: Polymorphismus
Die Klasse MainForm besitzt ein Attribut vom Typ Sorter. Und während der Laufzeit (je nachdem welcher Radiobutton ausgewählt wurde) wird ein Objekt einer Unterklasse instanzieriert und die öffentliche Methode Sort aufgerufen, die intern internalSort aufruft.

Zusätzlich ist noch erwähnenswert, dass ich im Quellcode mit einem extra Thread arbeite.
In diesem Thread wird der Sortieralgorithmus aufgerufen.
Ich habe diesen extra Thread eingeführt, da sich das Fenster während eines längeren Sortiervorgangs "aufhängt" bzw so lange nicht neugezeichnet wird, bis der Vorgang abgeschlossen ist.

Obwohl ich in C# 2.0 programmiert habe, habe ich nicht unbedingt die Features, wie Generics im Programm eingesetzt, aber das werdet ihr mir hoffentlich verzeihen :)

So...
Ich würde mich natürlich über positives Feedback, aber auch über konstruktive Kritik freuen.

Witi

Angehängte Datei(en)


0

Anzeige



#2 Mitglied ist offline   floerido 

  • Gruppe: aktive Mitglieder
  • Beiträge: 721
  • Beigetreten: 19. September 05
  • Reputation: 0

geschrieben 18. Februar 2006 - 00:54

Interessant wäre es wenn man die einzelnen Sortierschritte zusätzlich angezeigt bekommt, wobei dann der Zeit-Counter irgendwie unabhängig sein müsste.
0

#3 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 18. Februar 2006 - 01:41

Ich denke über die optimale Sortierung gibt's wohl weitestgehend Einigkeit unter Programmierern: 7 Elemente sortiert man noch direkt, für einige 100 reicht Quicksort, darüber hinaus BottomUp-Heapsort und ab Größe des L2-Cache ein modifiziertes Mergesort (wegen den hohen Cache-Lokalität). Für non-RandomAccess nur Insertsort und Mergesort.

Alle anderen Methoden sind zwar schön zu kennen, aber praktisch irrelevant.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. Februar 2006 - 18:01

Sicher gebe ich dir auf jeden Fall Recht.
Aber mein Ziel war es bestimmt nicht einen High-Performance Sortierer zu erstellen. Nur ein kleines schickes OO-Programm.

Vielleicht endlich mal ein Anstoß für andere hier im Forum auch Programme mit dem Quellcode zu veröffentlichen. Durch C&P lernt man halt am besten :P
0

#5 Mitglied ist offline   constructor 

  • Gruppe: aktive Mitglieder
  • Beiträge: 112
  • Beigetreten: 18. April 05
  • Reputation: 0

  geschrieben 19. Februar 2006 - 16:37

@Witi

Klasse Beispielprogramm und perfekt geeignet um sich mit dem Thema zu beschäftigen!
0

#6 Mitglied ist offline   greg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 403
  • Beigetreten: 20. Februar 05
  • Reputation: 0
  • Wohnort:Zossen

geschrieben 04. Dezember 2006 - 12:04

http://www.sortieralgorithmen.de/ da gibts auch ein schönes applet, das das Ganze visualisiert.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0