Peter Thomassen: Bitweiser Zugriff

Beitrag lesen

Hallo

Du musst einen Fehler in Deinem Insertion Sort haben. Insertion Sort ist im besten Fall (vorsortierte Liste) linear. Folgende Funktion (nach Algorithmen, Robert Sedgewick, Addison-Wesley) tut dies zumindest:

Das hat mich auch gewundert, aber ich habe:

function insertionSort(&$a) {
for($i = 1; $i < count($a); $i++) {
  $focus = $a[$i];
  for($j = $i; $j > 0 && $a[$j - 1] > $focus; $j--) {
   $a[$j] = $a[$j - 1];
  }
  $a[$j] = $focus;
}
}

  
\*grr\* Erst denken, dann reden. count($a) wird bei jedem Schleifendurchlauf ausgeführt und macht's so quadratisch. Hab's mal in eine Varialbe ausgelagert.  
  
Bye,  
Peter