Merge Sort - Quellcode verstehen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Merge Sort - Quellcode verstehen

    Hallo!
    Ich habe ein Verständnisproblem mit folgendem Code:

    PHP-Code:
    <?php
          
    function mergesort($array){
            if (
    sizeof($array) <= 1)
              return 
    $array;

            
    // teile Array in zwei Hälften
            
    $linkerTeil array_slice($array0, (int)(count($array)/2));
            
    $rechterTeil array_slice($array, (int)(count($array)/2));

            
    // Rekursion - teile die Hälften wiederum auf
            
    $linkerTeil mergesort($linkerTeil);
            
    $rechterTeil mergesort($rechterTeil);

            
    // Aufruf zum Zusammenfügen der Teile
            
    $returnArray merge($linkerTeil$rechterTeil);

            return 
    $returnArray;
        }


        function 
    merge($linkerTeil$rechterTeil) {
            
    $result = array();

            
    // solange beide Teile nicht leer sind
            
    while (count($linkerTeil)>&& count($rechterTeil)>0) {
                if (
    $linkerTeil[0] <= $rechterTeil[0]) {
                    
    array_push($resultarray_shift($linkerTeil));
                }
                else {
                    
    array_push($resultarray_shift($rechterTeil));
                }
            }

            
    // wenn eines der Arrays vor dem anderen leer wird:
            
    array_splice($resultcount($result), 0$linkerTeil);
            
    array_splice($resultcount($result), 0$rechterTeil);

            return 
    $result;
        }
    Den ersten Teil verstehe ich, die Funktion "merge" kann ich allerdings nicht richtig nachvollziehen. Vor allem den Teil mit array_splice.
    Kann mir das vielleicht jemand näher erklären? Danke schon mal im Voraus!

  • #2
    Hi,

    was ist den daran unklar anhand der Kommentare lässt es sich doch schon einfach nachvollziehen und was array_slice macht, siehst du hier: PHP: array_splice - Manual

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Verstehe ich das richtig: Es wird am Ende einfach der Teil angefügt, der noch nicht leer ist? Und, auch wenn es höchstwahrscheinlich eine sehr dumme Frage ist: Nach der Schleife kann maximal ein Teil noch maximal ein Element enthalten, oder?
      Zuletzt geändert von Dumpfdoedel; 01.10.2012, 16:30.

      Kommentar

      Lädt...
      X