Алгоритм поиска и сортировки PHP: Comb sort
Алгоритм поиска и сортировки PHP: упражнение-8 с решением
Напишите PHP-программу для сортировки списка элементов с использованием Comb sort.
Расческа - это разновидность пузырчатой сортировки. Подобно сортировке «Шелл», сортировка «Гребень» увеличивает разрыв, используемый в сравнениях и обменах. Некоторые реализации используют сортировку вставкой, когда зазор меньше определенной величины. Основная идея состоит в том, чтобы исключить черепах или небольшие значения в конце списка, поскольку в пузырьковой сортировке они значительно замедляют сортировку. Кролики, большие значения в начале списка не представляют проблемы при пузырьковой сортировке.
В пузырьковой сортировке, когда сравниваются любые два элемента, они всегда имеют разрыв 1. Основная идея гребенчатой сортировки состоит в том, что разрыв может быть намного больше 1.
Визуализация гребенчатой сортировки:
Анимационные кредиты: Jerejesse
Пример решения:
PHP-код:
<?php
function combSort($my_array){
$gap = count($my_array);
$swap = true;
while ($gap > 1 || $swap){
if($gap > 1) $gap /= 1.25;
$swap = false;
$i = 0;
while($i+$gap < count($my_array)){
if($my_array[$i] > $my_array[$i+$gap]){
list($my_array[$i], $my_array[$i+$gap]) = array($my_array[$i+$gap],$my_array[$i]);
$swap = true;
}
$i++;
}
}
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(', ',combSort($test_array)). PHP_EOL;
?>
Пример вывода:
Оригинальный массив: 3, 0, 2, 5, -1, 4, 1 Сортированный массив: -1, 0, 1, 2, 3, 4, 5
Блок-схема:
Редактор кода PHP:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу PHP для сортировки списка элементов, используя сортировку Коктейль.
Далее: Напишите программу PHP для сортировки списка элементов, используя сортировку Gnome.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования