Zum Inhalt springen

Array


Moeki

Empfohlene Beiträge

In einem Array der Größe n seien nur die Werte rot, blau, grün gespeichert. Das Array soll so sortiert werden, daß zunächst alle roten, dann alle grünen und zuletzt alle blauen Farben vorkommen. Die einzigen erlaubten

Zugriffsoperationen auf das Array sind

test(i): Liefert die Farbe der i-ten Komponente

tausch(i,j): tauscht die Inhalte der beiden Komponenten i und j

Schreiben Sie einen Algorithmus, der das Array in situ in O(n) Zeit sortiert. Zeigen Sie, daß Ihr Algorithmus in O(n) Schritten (also linear) terminiert und daß das Array dann tatsächlich sortiert ist.

Dieses Problem müsste man doch eigentlich rekursiv lösen oder? Quasi indem ich das Feld durchlaufe, solange die Bedingung rot < grün < blau erfüllt ist und andernfalls zwei Elemente tausche. Muss ich nun erst die ganze Liste einmal durchgehen, dabei alle relevanten Paare tauschen und danach die Liste von vorne beginnen oder welche Vorgehensweise empfiehlt ihr mir?

Danke, Moeki.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es überhaupt einen Sortieralgorhitmus, der O(n) hat?
Das kommt immer auf die Datenstruktur an. Wenn ich ziemlich genau weiss, welche Daten ich zum Sortieren bekomme, und in welcher Art und Weise diese sortiert werden müssen, in welcher Art vielleicht schon eine Vorsortierung stattgefunden hat, und letzen Endes alles ideal abläuft, dann ist jede Laufzeit denkbar. Theoretisch sogar O(1).

Ein allgemeiner Sortieralgorithmus wird allerdings niemals schneller als O(n·log(n)) sein können.

Siehe auch: http://de.wikipedia.org/wiki/Sortierverfahren

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Ja, der Algorithmus ist linear.

Mal zur Klärung: Der beste mögliche Sortieralgorithmus (! der nur auf Vergleichsoperationen basiert) hat eine Laufzeit von O(n log(n)).

Bei diesem Sortieralgorithmus wurde allerdings die Einschränkung gemacht, dass nur drei verschiedene Werte möglich sind.

Damit braucht man nicht mehr mit Vergleichsoperationen arbeiten, sondern mit dem Tauschen (ohne Vergleichen), daher ist der Algo mit O(n) möglich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...