Упражнения с массивом PHP: сортировка массива натуральных чисел с использованием алгоритма сортировки по бисеру
PHP Array: упражнение 10 с решением
Напишите программу PHP для сортировки массива натуральных чисел с использованием алгоритма сортировки по бисеру.
Согласно Википедии, «сортировка по бисеру - это естественный алгоритм сортировки, разработанный Джошуа Дж. Аруланандхамом, Кристианом С. Калудом и Майклом Дж. Диннином в 2002 году. Как в цифровой, так и в аналоговой аппаратной реализации сортировки по бисеру можно достичь времени сортировки O (n ), однако реализация этого алгоритма, как правило, значительно медленнее в программном обеспечении и может использоваться только для сортировки списков натуральных чисел ".
Входной массив : массив ([0] => 5 [1] => 3 [2] => 1 [3] => 3 [4] => 8 [5] => 7 [6] => 4 [7] => 1 [8] => 1 [9] => 3)
Пример решения:
<?php
function columns($uarr)
{
$n=$uarr;
if (count($n) == 0)
return array();
else if (count($n) == 1)
return array_chunk($n[0], 1);
array_unshift($uarr, NULL);
$transpose = call_user_func_array('array_map', $uarr);
return array_map('array_filter', $transpose);
}
function bead_sort($uarr)
{
foreach ($uarr as $e)
$poles []= array_fill(0, $e, 1);
return array_map('count', columns(columns($poles)));
}
echo 'Original Array : '.'
';
print_r(array(5,3,1,3,8,7,4,1,1,3));
echo '
'.'After Bead sort : '.'
';
print_r(bead_sort(array(5,3,1,3,8,7,4,1,1,3)));
?>
Пример вывода:
Оригинальный массив: массив ( [0] => 5 [1] => 3 [2] => 1 [3] => 3 [4] => 8 [5] => 7 [6] => 4 [7] => 1 [8] => 1 [9] => 3 ) После сортировки из бисера: массив ( [0] => 8 [1] => 7 [2] => 5 [3] => 4 [4] => 3 [5] => 3 [6] => 3 [7] => 1 [8] => 1 [9] => 1 )
Блок - схема:
Редактор кода PHP:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите PHP-скрипт для расчета и отображения средней температуры, пяти самых низких и самых высоких температур.
Далее: написать программу PHP для объединения (по индексу) указанных двух массивов.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования