Zadanie 6.
Stosując algorytm sortowania przez scalanie, posortuj tablicę $data
w porządku rosnącym.$dane = Array
(
[0] => 130
[1] => 4
[2] => 12
[3] => 32
[4] => 40
[5] => 3
[6] => 14
[7] => 19
[8] => 27
[9] => 25
[10] => 31
[11] => 49
[12] => 51
[13] => 55
[14] => 50
[15] => 100
)
function merge_sort($arr){
if(count($arr) == 1 ) return $arr;
$mid = count($arr) / 2;
$left = array_slice($arr, 0, $mid);
$right = array_slice($arr, $mid);
$left = merge_sort($left);
$right = merge_sort($right);
return merge($left, $right);
}
function merge($left, $right){
$res = array(); // wynik
while (count($left) > 0 && count($right) > 0){
if($left[0] > $right[0]){
$res[] = $right[0];
$right = array_slice($right , 1);
} else {
$res[] = $left[0];
$left = array_slice($left, 1);
}
}
while (count($left) > 0){
$res[] = $left[0];
$left = array_slice($left, 1);
}
while (count($right) > 0){
$res[] = $right[0];
$right = array_slice($right, 1);
}
return $res;
}
$dane = merge_sort($dane);
echo "Posortowana tablica:";
echo "<pre>\$dane = ";
print_r($dane);
echo "</pre><hr>";
Posortowana tablica:$dane = Array
(
[0] => 3
[1] => 4
[2] => 12
[3] => 14
[4] => 19
[5] => 25
[6] => 27
[7] => 31
[8] => 32
[9] => 40
[10] => 49
[11] => 50
[12] => 51
[13] => 55
[14] => 100
[15] => 130
)
Złożoność obliczeniowa algorytmu O(n⋅log n).