Zitat von
TUX_der_Pinguin:
Naja nur die halbe Anzahl also "Length(Files) div 2" bringt nichts, den dann tritt ein Fehler auf und das Programm bricht ab, soweit ist die Routine schon korrekt das sie mit "High(Files) div 2" arbeitet. Vorraussetzung ist Index 0 im Array.
Das zeigt nur, daß noch Fehler im Code sind, hier einige Beobachtungen:
- Die Shell-Sort-For-Schleife muß mit jedem k funktionieren, was viele Implementation auch benutzen, die mit 'optimalem' Inkrementen arbeiten (ggf. wird sie halt gar nicht durchlaufen).
- Es wird auch dann getauscht, wenn die Werte gleich sind.
-
if j > k then Dec(j,k) else j := 0; macht mich kribbelig. Was soll das? Wo kommt das her? Hier ist Potential für eine Endlosschleife, zB immer dann, wenn alle Arraywerte gleich sind. (Im 'Originalcode' kann das nicht passieren, weil da mit
> gearbeitet wird).
Zitat von
TUX_der_Pinguin:
Und ob jetzt die Schrittweitenfolge suboptimal oder nicht ist, ist soweit ja Vernachlässigbar solange der Quellcode generell funktioniert.
War ja auch nur unter 'nebenbei'.
Gammatester