PHP Array mittels Insertsort sortieren

vogti

Cadet 2nd Year
Registriert
Feb. 2008
Beiträge
23
Hallo,
im Informatik-Unterricht lernen wir gerade Sortieralgorithmen kennen. Als Programmiersprache nutzen wir Delphi.
Mein Ziel ist es jetzt Insertsort mittels PHP anzuwenden. Es soll ein Array nach den einzelnen Werten (die Werte sind zufällige Zahlen von 1-10) sortiert werden...
Aber irgendwie hab ich die Übersicht verloren und weis nicht was falsch ist. Ich scheine in den Insertsort part eine Endlosschleife oder so eingebaut zu haben - es wird ewig gerechnet...

PHP:
<?php
function tausche(&$e1, &$e2) {
  $hilfe=$e1;
  $e1=$e2;
  $e2=$hilfe;
}

$anzahl_spalte=10;
  for ($l=1; $l<=$anzahl_spalte; $l++) {
  $zahlen[$l]=rand(1,10);
  print ($l.'.'.' '.$zahlen[$l].'<br />');
  }
  /*INSERT SORT */
  for ($l1=2; $l2<=$anzahl_spalte; $l2++) {
    $l2=$l1;
    while (($zahlen[$l2]<$zahlen[$l2-1]) && ($l2 > 1)) {
      $hilfs=$l2-1;
      tausche($l2,$hilfs);
      $l2--;
  /*AUSGABE?*/
      print $zahlen[$l2].'<br />';
    }
  }
?>

lg,
vogti
 
Die Endlosschleife kommt dadurch zustande, dass du im Schleifenkopf der For-Schleife $l2 erhöhst, und direkt danach bei jedem Durchlauf wieder auf den Wert von $l1 (in diesem Fall 2) setzt. Somit wird die Abbruchbedingung nie erfüllt. Ausserdem versuchst du, $l2 zu erhöhen, hast aber vor dem ersten Durchlauf diese Variable gar nicht gesetzt.

Abgesehen davon funktioniert dein InsertSort noch nicht.

So beschreibt die Wikipedia den Algorithmus:
http://de.wikipedia.org/wiki/Insertsort
 
Zurück
Oben