Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Sortieren von Arrays
husky410
myCSharp.de - Member

Avatar #avatar-1712.jpeg


Dabei seit:
Beiträge: 225
Herkunft: Ruhrgebiet

Themenstarter:

Sortieren von Arrays

beantworten | zitieren | melden

Hallo!
Ich will ein Array sortieren (Quicksort oder Bubblesort):

public Fremdvariable[] MyItem = new Fremdvariable[10000];

Das Problem dabei ist, dass ich "Arry.Sort" nicht verwenden kann da es sich um keinen Standardtypen wie wie z. B. String handelt.

Auch die "IComparable"-Schnittstelle kann ich nicht benutzen, weil ich ein Array eines Datentyps einer Fremdbibliothek sortieren will und diese nicht implementiren kann.

Hat da jemand eine fertige Lösung für gesehen oder Quellcode?



mfg

husky
private Nachricht | Beiträge des Benutzers
Afrokalypse
myCSharp.de - Member



Dabei seit:
Beiträge: 452

beantworten | zitieren | melden

http://www.sortieralgorithmen.de
Signatur:
Die Signatur wird unter Ihren Beiträgen dargestellt.

:O ?( 8) ;( 8o :] =) X( :rolleyes: :baby: :evil: :tongue:
Smilies find ich doof =]
private Nachricht | Beiträge des Benutzers
norman_timo
myCSharp.de - Member

Avatar #avatar-1775.jpeg


Dabei seit:
Beiträge: 4.506
Herkunft: Wald-Michelbach (Odw)

beantworten | zitieren | melden

Hallo Husky!

Suchst Du einen Algorithmus dafür?

Dann schau mal hier:

Quicksort bei Codeproject.com

Ansonsten verstehe ich Deine Frage nicht so ganz...

Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

Wenn ein Typ nicht IComparable implementiert, kann man die Funktionalität auch losgelöst per IComparer bereitstellen.

Du schreibst einfach einen IComparer für den Typ in der Fremdbibliothek und übergibst ihn als zweiten Parameter an die Sort-Methode.


Gruss
Pulpapex
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

.NET-Sort ist bereits Quicksort.....
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo husky410,

bitte nicht wie vorgeschlagen eine eigene Sort-Routine implementieren, sondern die Lösung von Pulpapex verwenden.

herbivore
private Nachricht | Beiträge des Benutzers
norman_timo
myCSharp.de - Member

Avatar #avatar-1775.jpeg


Dabei seit:
Beiträge: 4.506
Herkunft: Wald-Michelbach (Odw)

beantworten | zitieren | melden

Hallo Herbivore!

Warum sollte man keine eigene Suchfunktion schreiben? Manchmal ist Quicksort nicht das schnellste, das hängt doch von der Vorsortierung ab, wenn ich mich nicht irre?

Ich hab mal vor Ewigkeiten alle möglichen Suchalgorithmen in C implementieren müssen, und dann haben wir zu Testzwecken das auf große Datenbanken losgelassen.

Also Quintessenz war damals (und das ist das einzige was ich behalten konnte :-) dass je nach dem was für Daten vorliegen, und wie sie eben vorsortiert sind dieser oder jener Algorithmus schneller war.

Prinzipiell hast Du aber Recht, wenn man keine Informationen darüber hat, wie die Quelle aussieht, ist Quicksort (oder auch .NET-Sort) im Mittelmaß das Schnellste.

Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo norman_timo,

natürlich gibt es Gründe für spezielle Situationen spezielle Sortierroutinen zu schreiben. Was ich z.B. vermisse ist eine Sortierungroutine, die stabil* sortiert. Aber ich meinte das genau so, wie du im letzten Abschnitt schreibst. Wenn man nichts spezielles braucht, sollte man nichts selber schreiben.
Zitat
* Man unterscheidet zudem zwischen stabilen und instabilen Sortierverfahren. Stabile Sortierverfahren sind solche, die die relative Reihenfolge von Elementen, die bezüglich der Ordnung äquivalent sind, nicht verändern, während instabile Sortierverfahren diese Reihenfolge ändern können. Quelle: Wikipedia
herbivore
private Nachricht | Beiträge des Benutzers