Алгоритм поиска и сортировки PHP: сортировка гномов
Алгоритм поиска и сортировки PHP: упражнение 9 с решением
Напишите программу PHP для сортировки списка элементов, используя сортировку Gnome.
Сортировка гномов - это алгоритм сортировки, первоначально предложенный доктором Хамидом Сарбази-Азадом (профессором вычислительной техники в Шарифском технологическом университете) в 2000 году и названный «глупой сортировкой» (не путать с богосортом), а затем описанный Диком. Грун и назвал "гномом рода".
Алгоритм всегда находит первое место, где два соседних элемента находятся в неправильном порядке, и меняет их местами. Он использует тот факт, что выполнение обмена может привести к появлению новой неупорядоченной соседней пары только рядом с двумя замененными элементами.
Визуализация вида гномов :
Пример решения:
PHP-код:
<?php
function gnome_Sort($my_array){
$i = 1;
$j = 2;
while($i < count($my_array)){
if ($my_array[$i-1] <= $my_array[$i]){
$i = $j;
$j++;
}else{
list($my_array[$i],$my_array[$i-1]) = array($my_array[$i-1],$my_array[$i]);
$i--;
if($i == 0){
$i = $j;
$j++;
}
}
}
return $my_array;
}
$test_array = array(3, 0, 2, 5, -1, 4, 1);
echo "Original Array :\n";
echo implode(', ',$test_array );
echo "\nSorted Array :\n";
echo implode(', ',gnome_Sort($test_array)). PHP_EOL;
?>
Пример вывода:
3, 0, 2, 5, -1, 4, 1 Сортированный массив: -1, 0, 1, 2, 3, 4, 5
Блок-схема:
Редактор кода PHP:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу PHP для сортировки списка элементов, используя сортировку Comb.
Далее: Напишите программу PHP для сортировки списка элементов, используя сортировку Bucket.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования