This is an old revision of the document!


Lösningsförslag till uppgift 4 (Bubblesort)

Filen bubblesort.php
Jag väljer att lägga min sorteringsfunktion i en separat fil så att jag kan inkludera den i olika program utan att huvudprogrammet behöver komma med då.

<?php
// Måste vara referensparameter (&) för att ändringar i funktionen också
// ska gälla i huvudprogrammet.
function my_bubblesort(&$a){
 
    // Det behövs ett varv mindre än vad det är tal i arrayen.
    // T.ex. om det är 9 tal i arrayen och det största talet står sist
    // så behövs det 8 varv för att vara säker på att arrayen blir sorterad.
    // Om det sista talet är störst "bubblar" det ett steg mot starten av
    // arrayen för varje varv i den yttre loopen.
    $i = 0;
    while ($i < count($a) - 1){
 
        // Loopar bara till näst sista elementet så att inte $a[$j+1]
        // hamnar utanför arrayen.
        $j = 0;
        while ($j < count($a) - 1){
            if ($a[$j] < $a[$j+1]){
                $temp = $a[$j];     // Byter plats via en temporär variabel.
                $a[$j] = $a[$j+1];
                $a[$j+1] = $temp;
            }
            $j++;
        }
        $i++;
    }
}


Huvudprogrammet

<?php
include 'bubblesort.php';
include 'head.php';
 
$arr = [5,9,4,7,2,12,7,12,15];
my_bubblesort($arr);
$i = 0;
while($i < count($arr)){
    echo $arr[$i] . ' ';
    $i++;
}
echo '<br>';
 
include 'foot.php';