кодесурса
«PHP

Алгоритм поиска и сортировки PHP: сортировка гномов

script1adsense2code
script1adsense3code

Алгоритм поиска и сортировки PHP: упражнение 9 с решением

Напишите программу PHP для сортировки списка элементов, используя сортировку Gnome.

Сортировка гномов - это алгоритм сортировки, первоначально предложенный доктором Хамидом Сарбази-Азадом (профессором вычислительной техники в Шарифском технологическом университете) в 2000 году и названный «глупой сортировкой» (не путать с богосортом), а затем описанный Диком. Грун и назвал "гномом рода".
Алгоритм всегда находит первое место, где два соседних элемента находятся в неправильном порядке, и меняет их местами. Он использует тот факт, что выполнение обмена может привести к появлению новой неупорядоченной соседней пары только рядом с двумя замененными элементами.

Визуализация вида гномов :

«JavaScript:

Пример решения:

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code