Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Shellsort Sortieralgorythmus
Petsi2000 - Mo 13.12.04 13:58
Titel: Shellsort Sortieralgorythmus
Hallo Leute, ich hab ein Problem mit Shellsort. Naja im Grunde ist es kein Problem sondern ich versteh den Algorythmus nicht. Wäre Super wenn ihn mir einer kommentieren könnte hinter dem Code... :) Vielen Dank im Voraus...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| I,j,k,hilfe:longint; Anzahl: integer; begin k:=1; repeat k:=3*k+1 until k>anzahl; repeat k:=k div 3; for i:=k+1 to anzahl do begin hilfe:=h[i]; j:=i; while (h[j-k]>hilfe) and (j>k) do begin h[j]:=h[j-k]; dec(j,k); end; h[j]:=hilfe; end; until k=1; |
rochus - Mo 13.12.04 14:24
wie wärs, wenn du mal danach googlest:
SHELLSORT
denn gleich der erste eintrag erklärt dir das ding.
gruß
rochus
Petsi2000 - Mo 13.12.04 14:28
So schlau bin ich leider nicht. Den Link hatte ich mir bereits angeschaut aber auf meinen Code übertragen verstehe ich das nicht.
So eine Erklärung mit Code Kommentaren wär einfacher für mich zu verstehen. Sorry
Danke...
rochus - Mo 13.12.04 14:37
hmm ich hab den auch erst vor 2 wochen implementiert. wenn du dich bis heute abend 20.00 uhr gedulden kannst, schreib ich dir das da ausführlich (wenns bis dahin niemand gemacht hat), hab jetzt leider aber nicht so die zeit (Meine to-do-liste quillt mal wieder über)
Petsi2000 - Mo 13.12.04 22:35
das wäre super rochus :)
wäre schön wenn ichs bis morgen hätte aber hetz dich nicht..
vielen vielen Dank im Voraus
rochus - Di 14.12.04 00:11
ist vielleicht nicht ganz klar, weil ich ziemlich müde bin. habs total vergessen :/ ich hoff aber mal das hilft dir ein wenig weiter, ansonsten lies dir die ganzen gegoogelten sachen durch, da hats auch einfacher zu verstehende :)
Delphi-Quelltext
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:
| procedure ShellSort(var h: array of integer); var anzahl, k,i,j,hilfe: integer; begin
anzahl := length(h);
k := 1; repeat k := 3*k+1; until k>anzahl; repeat k:=(k div 3);
for i:=k to anzahl do begin hilfe:=h[i]; j:=i; while (h[j-k]>hilfe) and (j>(k-1)) do begin h[j]:=h[j-k]; dec(j,k); end;
h[j]:=hilfe; end; until k = 1; end; |
Petsi2000 - Di 14.12.04 08:07
Vielen Dank rochus. Genau das habe ich gesucht! Jetzt ist mir das alles klar geworden.
Vielen Dank nochmal... Bye
rochus - Di 14.12.04 09:42
Kein Thema :) war aber halt etwas spät *lol*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!