Autor Beitrag
mortus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mo 16.12.02 19:50 
in meinem programm muessen staendig neue elemente erzeugt und an der richtigen stelle in eine sortierte liste eingefuegt werden. momentan benutze ich lineares einsortieren. binaeres einsortieren erscheint mir zu unpraktisch in diesem fall. welche moeglichkeiten gibt es noch? dabei sollten keine hilfsarrays verwendet werden.
danke im voraus
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Di 17.12.02 06:44 
Hi,

ich nehm mal an das du mit VCL arbeitest, da wäre es die einfachste und wohl auch schnellste methode wenn du einfach ne TStringList benutzt.

da kannst du all deine einträge immer reinpacken, und mit TStringList.Sort einfach Sortieren lassen :)

Au'revoir,
Aya
mortus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 17.12.02 16:36 
danke fuer den ratschlag. ich arbeite in diesem fall aber wirklich ohne vcl. (sonst haette ich TList verwendet). so moechte ich bei meiner verketteten liste bleiben. ein listenelement enthaelt ausserdem nicht nur einen string sondern mehrere strings+integer.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Di 17.12.02 18:04 
Wenn du mit verketteten Listen arbeitest, dann ist das lineares einsortieren das einfachst zu programmierenste und auch m.E. das schnellste. Ein binäres Einsortieren verliert seine Geschwindigkeit, da man bei jedem halbieren erst alle Elemente bis zur Mitte durchlaufen muss, was man beim linearen Einsortieren sowieso machen muss, aber eben nur 1x.

Und zur Classes Unit. Diese gehört nicht zur VCL sondern RTL (RunTime Library), wie auch die Unit SysUtils.

_________________
Ist Zeit wirklich Geld?
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 17.12.02 23:55 
Hallo,

bei einer sortierten doppelt verketteten Liste währe es siche sinvoll, den "Head" nicht auf das erste Element sondern auf das mittlere. Danach musst du im schlimmsten Fall nur noch die hälfte der Elemente durchsuchen. Du musst beim suchen nur entscheiden in welche Richtung du läufst.
Schwieriger wird es, den Haed auf dem richtigen Element zu halten. Du must ihn nach jedem Einfügen neu positionieren bzw. die Position überprüfen. Wenn du keine Hilfsvariablen verwenden willst (ElementeLinks, Elemente Rechts) musst du in den Fällen im grunde die Liste ablaufen.

Gruß
Klabautermann
Hagbard Celine
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Fr 20.12.02 16:39 
Wenn Du es Dir einfach machen willst dann verwende tObjectList und deren sort Funktion.

Du musst vorher eine funktion definieren die DU dann als Parameter an die sort Funktion übergiebst! In der Funktion musst Du nur den ergleich von deinen Eigenschaften vornehmen und entsprechend den Rückgabewert definieren!

Welches Sortierverfahren hier verwendet wird kann ich dir nicht sagen, aber die werden schon ein sinnvolles gewählt haben!