hallo
ich habe mal aus meiner infozeit in der schule n paar sortier algorithmen rausgesucht, vll. hilfts ja.
aber ich glaube es gibt auch bestimmte funktionen von delphi für arrays (hab schon lange nix mehr mehr delphi gemacht)
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: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| PROCEDURE bubble(n:INTEGER;VAR a:FeldT); VAR i,j,h : INTEGER; BEGIN FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF a[j]>a[j+1] THEN h:=a[j]; a[j]:=a[j+1]; a[j+1]:=h END END; END; END bubble;
PROCEDURE insertion(n:INTEGER;VAR a:FeldT); VAR i,j,h : INTEGER; BEGIN FOR i:=2 TO n DO h:=a[i]; j:=i-1; WHILE (h<a[j]) & (j>0) DO a[j+1]:=a[j]; j:=j-1; END; a[j+1]:=h; END; END insertion;
PROCEDURE selection(n:INTEGER;VAR a:FeldT); VAR i,j,k,h : INTEGER; BEGIN FOR i:=1 TO n-1 DO k:=i; h:=a[i]; FOR j:= i+1 TO n DO IF a[j]<h THEN k:=j; h:=a[j] END; END; a[k]:=a[i]; a[i]:=h END; END selection;
PROCEDURE quick(VAR a:FeldT;l,r:INTEGER); VAR i,j,x,w:INTEGER; BEGIN i:=l; j:=r; x:=a[(l+r) DIV 2]; REPEAT WHILE a[i]<x DO i:=i+1; END; WHILE x<a[j] DO j:=j-1; END; IF i<=j THEN w:=a[i]; a[i]:=a[j]; a[j]:=w; i:=i+1; j:=j-1 END UNTIL i>j; IF l<j THEN quick(a,l,j); END; IF i<r THEN quick(a,i,r) END; END quick; |
das mit dem löschen hab ich nich verstanden...
- willst du eine zahl löschen und der rest der zahlen soll nach rutschen?
-> dann speichere die pos. der gelöschten zahl und lass alle dahinter mit einer for schleife nachrutschen
- willst du eine zahl löschen und gleich ne neue einfügen... noch einfacher...
-> pos. spichern und dort wieder die neue einfügen ... hoffe hab dich nich falsch verstanden
mfg
bytekiller
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt