|
|
Welchen Sortieralgorithmus nehmen ? |
|
Andy386 |
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 01.07.2009, 09:52
Titel: Welchen Sortieralgorithmus nehmen ?
|
|
Ich bin auf der Suche nach einem schnellen Sortieralgorithmus für eine Matrix, die schon aus zwei sortierten Teilmatrixen besteht. z.B. so:
Ein Tipp, welcher der vielen Suchalgorithmen passt, wäre toll !
Am tollsten wäre ein schon fertiges Verfahren in Matlab...
[edit] Meine Intention ist, mein intersect()-Problem über die Grafikkarte lösen zu lassen, unter Zuhilfenahme von AccelerEyes Jacket. Dort wurde aber noch kein Sortieralgorithmus implementiert...
|
|
|
|
|
Andy386 |
Themenstarter
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 03.07.2009, 10:58
Titel:
|
|
Vielleicht könnte das ein Mod in Mathematikforum schieben?
|
|
|
Andy386 |
Themenstarter
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 06.07.2009, 16:07
Titel:
|
|
|
|
Verschoben: 06.07.2009, 16:18 Uhr von steve Von Programmierung nach Mathematik |
Tusor |
Forum-Fortgeschrittener
|
|
Beiträge: 71
|
|
|
|
Anmeldedatum: 02.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.07.2009, 16:43
Titel:
|
|
Willst du nach der ersten Spalte sortieren?
Da die Matrizen an sich schon sortiert sind, würde ich an dieser Stelle "Insertsort" vorschlagen. Allerdings soweit clever abgewandelt, dass man das Wissen ausnutzt, dass da immer wieder schon sortierte Zeilen kommen, die nur in das bereits sortierte einsortiert werden müssen. Ich würde das so machen, dass ich die erste Zeile der zweiten Teilmatrix hernehme und in die erste Teilmatrix einsortiere. Dann die zweite Zeile der zweiten Teilmatrix,....usw. Dabei kann man sich natürlich den Index der vorher einsortierten Zeile merken, da man weiß, dass die zweite Teilmatrix ja auch schon sortiert ist und deshalb die zweite Zeile der zweiten Teilmatrix nie vor der ersten Zeile der zweiten Teilmatrix einsortiert werden muss. Und diesen Spaß macht man dann für alle weiteren Teilmatrizen. Ich hoffe, dass ich das jetzt nicht zu umständlich erklärt habe und man versteht, was ich meine
Viele Grüße
Tusor
|
|
|
Andy386 |
Themenstarter
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 08.07.2009, 08:55
Titel:
|
|
Genau, die Matrizen sollen zuerst nach der ersten, dann nach der zweiten Spalte sortiert werden.
Danke für die Erläuterung, das hilft auf jeden Fall !
|
|
|
hra |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.07.2010, 07:24
Titel:
|
|
Hast du für dein Problem inzwischen eine Lösung gefunden?
Ich stehe nämlich momentan vor einer ähnlichen Aufgabe.
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 16.07.2010, 08:57
Titel:
|
|
Hallo
nimmt doch SORTROWS
|
|
|
hra |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.07.2010, 13:50
Titel:
|
|
Perfekte Antwort... Hätte ich die Beschreibung des Befehls vorher gründlicher gelesen, hätte ich mir die überflüssige Frage sparen können.
Danke für die trotzdem freundliche und hilfreiche Antwort!
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 17.07.2010, 16:45
Titel:
|
|
Hallo,
zwei vorsortierte Datensätze zu vereinen ist eine Aufgabe für den mergesort Algorithmus.
Eine andere Idee kann helpfen, wenn die Werte alle kleine Integerzahlen sind und nur wenige Spalten sortiert werden sollen. Dann kann man aus z.B. 3 Zahlen mit 0<=x<2^17 einen Wert berechnen, indem man mit [2^34; 2^17; 1] multipliziert. Das lässt ich dann mit SORT sortieren. Das ist zwar einfach ein stabiler quicksort, aber doch sehr effizient programmiert, so dass man mit einem besser angepassten Algorithmus in Matlab nur schwer schneller sein kann.
Bei großen Datenmengen ist dies aber doch möglich:
http://www.mathworks.com/matlabcentral/fileexchange/8097
Gruss Jan
|
|
|
Andy386 |
Themenstarter
Forum-Guru
|
|
Beiträge: 485
|
|
|
|
Anmeldedatum: 24.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.1/8
|
|
|
|
|
|
Verfasst am: 02.08.2010, 00:36
Titel:
|
|
Vielen Dank für die Antwort
aus irgendeinem grund habe ich die idee mit dem Multiplizieren verwerfen müssen... weiss gar nicht mehr, aber ich glaube, beim Trennen hat es dann "ewig" gedauert... ist schon zu lange her...
hab mir mal den fileexchange-code angeschaut, ich glaube, dass der nur schneller ist, wenn große Teile (Anfang oder Ende) genau so gelassen werden... hatte etwas ähnliches probiert, und der "fertige" sort war für meine Matrizen viel schneller.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
|
|
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.
|
|