Nadesłany przez kiziorgd, 09 marca 2016 16:02
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
quicksort.php:
<?php
//Sortowanie szybkie (quickosort)
//www.algorytm.org
function quickSort($arr)
{
//jezeli argumentem jest tablica pusta lub jednoelementowa
//to nie trzeba jej juz sortowac, zwroc ja od razu i zakoncz dzialanie
if (count($arr) <= 1){
return $arr;
}
$pivot = $arr[0];
$smaller = [];
$equal = [];
$greater = [];
//wrzuc do tablicy $smaller elementy mniejsze od elementu dzielacego $pivot
foreach ($arr as $x) {
if ($x < $pivot) {
array_push($smaller, $x);
}
}
//wrzuc do tablicy $equal elementy rowne elementowi dzielacemu $pivot
foreach ($arr as $x) {
if ($x == $pivot) {
array_push($equal, $x);
}
}
//wrzuc do tablicy $greater elementy wieksze od elementu dzielacego $pivot
foreach ($arr as $x) {
if ($x > $pivot) {
array_push($greater, $x);
}
}
//scal:
//- wyniki sortowania tablicy elementow mniejszych,
//- tablicy elementow rownych,
// wyniku sortowania elementow wiekszych
return array_merge(quickSort($smaller), $equal, quickSort($greater));
}
$tablica = array(16, 16, 4, 4, 10, 6, 14, 3, 15, 4, 4, 8, 1, 11, 12, 2, 19, 20, 7, 13, 5, 9, 1, 0, 18, 17);
//sortuj tablice
$sorted = quickSort($tablica);
//wypisz wynik
var_dump($sorted)
?>

