hi und nen guten morgen @all,
ich bins mal wieder. Ich habe volgende QuickSort funktion selbergebastelt bitte net lachen.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| ... type navi_rec = record ebene1 : string; ebene2 : string; ebene3 : string; me1 : integer; me2 : integer; me3 : integer; auto : integer; self : integer; autoinc: integer; end; ... private ... nav: array of navi_rec;
function QuickSort(rein:string):boolean; var i,j,erg:integer; links,rechts:integer; tmp: navi_rec; begin if length(form1.nav)>1 then begin i:=-1; repeat i:=i+1; j:=i; repeat j:=j+1; if j>length(form1.nav)-1 then begin j:=length(form1.nav)-1; i:=length(form1.nav)-1; end; links:=form1.nav[i].me1*100000+form1.nav[i].me2*1000+form1.nav[i].me3*10; erg:=form1.nav[i].me1*100000+form1.nav[i].me2*1000+form1.nav[i].me3*10; form1.nav[i].auto:=erg; rechts:=form1.nav[j].me1*100000+form1.nav[j].me2*1000+form1.nav[j].me3*10; if links>rechts then begin tmp:=form1.nav[i]; form1.nav[i]:=form1.nav[j]; form1.nav[j]:=tmp; end; until j=length(form1.nav)-1; until i=length(form1.nav)-1; end; end; |
nun zu meiner Frage wie kann ich diese Funktion verbessern und flexibler machen. Schön wäre wenn ich me1, me2, me3 sortieren könnte ohne dabei diese rechen Funktion zunutzen. Ein weiteres nettes Feature wäre wenn ich mit der Funktion auch string-record einträge sortieren könnte. Und das bzw. die zu sortierenden Felder auswählen könnte. Bitte nicht meckern ich habe schon die ganze Nacht damit verbracht die Sortierfunktion zu basteln da ich leider nicht schlau aus den vorhandenen Informationen geworden bin. Die such Funktion ist heiß gelaufen und mein Gehirn kurz vorm supergau. Ich wäre euch sehr verbunden wenn ihr mir ein paar gute Lösungsansätze und etwas Code zur Verfügung stellen würdet.
Gruß Steffen