|
|
Programmierung quicksort; Probleme mit den Pivotelement |
|
Benjo2309 |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 06.06.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2022, 15:13
Titel: Programmierung quicksort; Probleme mit den Pivotelement
|
|
Hallo,
ich habe ein ein Programm geschrieben, welches nach dem Quicksortverfahren sortiert.
v steht für den Zeilenvektor
e für das Pivotelement.
Wenn ich als Pivotelement das Erste nehme, dann funktioniert alles korrekt, leider nicht für ein anderes Pivotelement.
Beispiel:
qsort22(['EineZeichenKette174'], 1)
ans = '147EKZceeeeehiinntt'
qsort22(['EineZeichenKette174'], 2)
ans = '1477Zceeeehhiinnttt'
Ich verstehe nicht warum mein EK verwindet und t und 7 auftaucht. Kann mir jemand weiter helfen? Liebe Grüße
Mein Code:
|
|
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 22.06.2022, 17:29
Titel:
|
|
|
|
|
Hallo,
es sieht danach aus, dass der Fehler aus dieser Zeile resultiert:
Denn hier startest du immer bei der Position 2 des Vektors. Bei e=1 ist das auch die richtige Position (e+1), da 1 das Pivotelement ist. Für e=2 müsste der Startpunkt jedoch 1 und 3 sein, wenn ich das Konzept des Quicksort richtig verstanden habe (Quicksort bei Wikipedia). Denn bei e>1 hast du einen Teil links und einen Teil rechts des Pivotelements, welche iterativ sortiert werden müssen.
In deinem Code hast du quasi nur den rechten Teil berücksichtigt, was für den Spezialfall e=1 das richtige Ergebnis liefert, für alle anderen Werte von e aber nicht funktioniert, da jeweils der Teil links vom Pivotelement nicht berücksichtigt wird.
Gelöst habe ich es jetzt nicht, aber ich hoffe, du kommst mit dieser Analyse weiter.
Viele Grüße
Steve
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.06.2022, 20:02
Titel:
|
|
Hallo,
nach Steves Anstoß meine ich die Lösung zu wissen. In der von Steve genannten Zeile:
verwenden.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|