[PHP] Quicksort (Bekomme die Funktion nicht zum laufen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Kaptain27, 3. Juni 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 3. Juni 2009
    Quicksort (Bekomme die Funktion nicht zum laufen

    Hallo zusammen

    Ich habe im Netz folgende Funktion zum Quicksort gefunden aber irgendwie bekom ich die nicht zum laufen. Aber jetzt erstmal der Code:

    Code:
    <?php
    
    function quick_sort($array){
     if (count($array) <= 1) return $array; 
    
     $key = $array[0];
     $left_arr = array();
     $right_arr = array();
     for ($i=1; $i<count($array); $i++){
     if ($array[$i] <= $key)
     $left_arr[] = $array[$i];
     else
     $right_arr[] = $array[$i];
     }
     $left_arr = quick_sort($left_arr);
     $right_arr = quick_sort($right_arr); 
    
     return array_merge($left_arr, array($key), $right_arr);
    }
    
    ?>
    
    
    // Folgendes Array möcht ich sortieren: $array = array(2,3,41,2,33,4,56,1,2,3,45,6,5);
    
    Was mich schon wundert ist, dass mitten in der Funktion dieFunktion wieder aufgerufen wird
    Code:
     $left_arr = quick_sort($left_arr);
     $right_arr = quick_sort($right_arr); 
    Ansonsten scheint der Rest sehr einleuchtend. Vielleicht kann mir ja wer helfen.

    Mfg Kaptain27
     
  2. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    Wie wärs einfach mit der PHP-Funktion "sort"?

    -> PHP: sort - Manual


    Gruß Blackbird
     
  3. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    Und warum bekommst du die Funktion nicht zum laufen? Gibt es irgendeine Fehlermeldung oder etwas vergleichbares?
     
  4. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    Hallo


    Kenne den Befehl sort. Ist aber nicht Sinn und Zweck der aufgabe. Ich möchte einen Qicksort nachbauen bzw. soll es.

    Habe folgenden Code und Rufe ihn auf und es passiert rein garnichts.

    Code:
    <?php
    
     $array = array(2,3,41,2,33,4,56,1,2,3,45,6,5);
    
    function quick_sort($array){
     if (count($array) <= 1) return $array; 
    
     $key = $array[0];
     $left_arr = array();
     $right_arr = array();
     for ($i=1; $i<count($array); $i++){
     if ($array[$i] <= $key)
     $left_arr[] = $array[$i];
     else
     $right_arr[] = $array[$i];
     }
     $left_arr = quick_sort($left_arr);
     $right_arr = quick_sort($right_arr); 
    
     return array_merge($left_arr, array($key), $right_arr);
     echo array_merge($left_arr, array($key), $right_arr);
    }
    
    quick_sort($array)
    
    ?>
    
    
     
  5. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    PHP:
    <? php

     $array 
    = array( 2 , 3 , 41 , 2 , 33 , 4 , 56 , 1 , 2 , 3 , 45 , 6 , 5 );

    function 
    quick_sort ( $array ){
      if (
    count ( $array ) <=  1 ) return  $array

      
    $key  $array [ 0 ];
      
    $left_arr  = array();
      
    $right_arr  = array();
      for (
    $i = 1 $i < count ( $array );  $i ++){
        if (
    $array [ $i ] <=  $key )
          
    $left_arr [] =  $array [ $i ];
        else
          
    $right_arr [] =  $array [ $i ];
      }
      
    $left_arr  quick_sort ( $left_arr );
      
    $right_arr  quick_sort ( $right_arr ); 

      return 
    array_merge ( $left_arr , array( $key ),  $right_arr );
    }

    $sortiert  quick_sort ( $array );

    foreach(
    $sortiert  as  $val )
    {
        echo 
    $val  '<br/>' ;
    }

    ?>
    Alles nach einem return wird nicht mehr ausgeführt, deshalb war dein echo sinnlos. Außerdem kannst du mit einem echo kein Array ausgeben.
     
  6. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    Hey Hapablap

    danke für die Hilfreiche Aussage. Jetzt loift er in Line 17 auf einen Feler.
    Fatal error: Call to undefined function quick_sort() in C:\xampp\htdocs\qsort.php on line 17

    das ist die Stelle, wo die Quicksort Funktion in der eigentlichen Funktion aufgerufen wir. Geht sowas igentlich?


    Gruß Kaptain27
     
  7. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    So etwas nennt man Rekursion . Quicksort ist ein rekursiver Sortieralgorithmus.
     
  8. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    Ahh gut zu wissen. Man lernt halt nie aus. Aber warum heut der mir da ein Fehler raus. Ich dreh bald am Rad.

    Mfg Kaptain27
     
  9. 4. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    Bei mir gibt es da keinen Fehler. Bist du sicher, dass du den Code von Hapablap richtig übernommen hast? Hast du dich vielleicht bei der Zeile "function quick_sort($array)" verschrieben?
     
  10. 5. Juni 2009
    AW: Quicksort (Bekomme die Funktion nicht zum laufen

    bin ich dooof. Ich habe die PHP im falschen verzeichnis gespeichert. Allles klar jetzt loifts. BWs analle gehen raus.

    Mfg Kaptain27

    CLOSED
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.