![]() |
Karten sortieren
Hi,
ich arbeite mit der cards.dll und habe einiges von ![]() Kann ich das direkt irgendwie mit dem Typ machen? Also a la
Delphi-Quellcode:
?
if TBlatt.Wert[1] < TBlatt.Wert[2] ...
Geht wahrscheinlich nicht... Aber in c++ kann man ja alles mögliche vergleichen :( Ansonsten würde mir nur noch einfallen den verschiedenen Karten Werte zuzuweisen und dann diese Werte zu sortieren. Könnt ihr mir da nen Tipp geben? Alex |
Re: Karten sortieren
Mit Deinem Konstrukt musst Du Quicksort entsprechend
dem Typ TKarte anpassen so wie unten funktioniert das nicht direkt.
Delphi-Quellcode:
A ist dann die temporäre Werteliste und oldindex die Indexliste von Blatt bzw. TBlatt bzw Wert.
Type
TIntegerArray=Array of integer; procedure QuickSortint2(var A,oldindex: TintegerArray; iLo, iHi: Integer); //Var ändert die übergebene Variable direkt!!! var Lo, Hi, Mid, T,Tindex: Integer; IndexList:Array of integer; L1_,cnt1_:integer; begin while (Length(A)<1) do exit; Lo := iLo; Hi := iHi; Mid := A[(Lo + Hi) div 2]; repeat while A[Lo] < Mid do Inc(Lo); while A[Hi] > Mid do Dec(Hi); if Lo <= Hi then begin T := A[Lo]; Tindex:=oldindex[Lo]; A[Lo] := A[Hi]; oldindex[Lo]:=oldindex[Hi]; A[Hi] := T; oldindex[Hi]:=Tindex; Inc(Lo); Dec(Hi); end; until Lo > Hi; if Hi > iLo then QuickSortInt2(A,oldindex, iLo, Hi); if Lo < iHi then QuickSortInt2(A,oldindex, Lo, iHi); end; Dann wäre nach dem sortieren oldindex[0] der index des Blattes mit dem niedrigsten Wert. Für Oldindex verwendest Du natürlich eine eigene Integerliste ,die direkt durch den Var Parameter in der Procedure geändert wird.Nicht so elegant wie direkt die Werte zu sortieren aber vorerst am einfachsten: Du legst Du 2 neue Listen an. 1.mit den Werten,2. mit den Indexen (0,1,2,3...) und verwendest anschliessend die neue Indexliste die die alten Indexe/Indizes (sortiert) enthält. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz