sortierungs algorithmus – ShellSort

hallo,
ich habe ein problem mit sortierungs algorithmen

ich habe als aufgabe bekommen, den algorithmus des shellsort verfahrens genauer unter die lupe zu nehmen und im php zu schreiben

der algorithmus ist sowas von leicht
man nimmt die zahlenkette die durcheinander ist, die wird in eine 4 spaltige matrix gespeichert die spalten werden nach größe sortiert dann wird das immer kürzer gefasst bis nur noch eine da ist und schon ist es fertig

naja ok die 4 spaltige matrix kann auch mehr spalten haben aber ich glaube 3 zeilen müssen immer sein

naja seis drumm

ich weiß einfach nicht wie ich das i php schreiben kann.
google ist leider nicht sehr ergiebig was das angeht. um genau zu sein habe ich ein codebeispiel gefunden, welches ich nicht kapiert habe weil irgendwie nur tutorial drüberstand aber außer dem code nichts drinne stand (den ich wegen schlechten variablen namen und kommentaren nicht kapiere)

alle weiteren seiten hatten auf räzelhafte weise nur eine 1 zu 1 kopie von wikipedia

ich währe euch sehr sehr dankbar ich brauche keinen ganzen code das will ich garnicht aber das prinzip was brauche ich dafür wie und warum

mein ansatz ist, die matrix im mehrdimensionalen array zu erschaffen

von $array[0][0] bis $array[2][x] je nachdem wie viele zahlen es sein sollen
dann den array
$array[0][0], [1][0], [2][0] sortieren das ganze dann auch bei [0][1] und ja da fangen meine probleme an habe mich einem relativ langem if block sämtliche varianten dieser zahlen aufgestellt

wenn array mit 0 größer als 1 dann steht er forne wenn nicht steht er hinten wenn der mit 2 kleiner 0 oder größer nur kleiner 1 oder größer 1 und so weiter als ich das dann hatte habe ich ungefähr 200 zeilen geschreiben und war dann entnervt als ich aus meinen 4 spaltn 2 machen musste

da ich mir dachte das es das nicht sein kann habe ich den ganzen mist gelöscht und bin nun nach 4 stunden suchen doch zum entschluss gekommen hier zu fragen

bitte helft mir

edit:
das ist der code wie ich ihn gefunden habe kann mir den vllt jmd erklären?
[php]
function shellsort($zahlen,$verfahren)
{
$k=0;
$length = count($zahlen);
$gap[0]= ($length / 2);
while($gap[$k]>1)
{
$k++;
$gap[$k] = $gap[$k-1]/2;
}
for($i=0;$i<=$k;$i++) { $step=$gap[$i]; for($j=$step;$j<$length;$j++) { $temp=$zahlen[$j]; $p=$j-$step; while($p>=0 && $temp<$zahlen[$p]) { $zahlen[$p+$step]=$zahlen[$p]; $p=$p-$step; } $zahlen[$p+$step]=$temp; } } return $zahlen; } [/php] er funktioniert genau so wie ich es erwartet habe habe n bissel dran rumgewerkelt aber ab der ersten while schleife kapiere ich es net mehr

Leave a Reply

Your email address will not be published. Required fields are marked *