该算法与冒泡排序的不同之处在于,它在每次遍历列表时都在两个方向举行排序。这类排序算法实际上比冒泡排序更难以完成,而且处理了冒泡排序中的海龟题目。它只提供了细小的机能革新,并没有改良渐近机能; 就像泡沫一样,虽然它在教诲中有效,但它没有实际意义。
鸡尾酒排序可视化动图示例以下:
PHP鸡尾酒排序代码示例以下:
<?php function cocktailSort($my_array) { if (is_string($my_array)) $my_array = str_split(preg_replace('/\s+/','',$my_array)); do{ $swapped = false; for($i=0;$i<count($my_array);$i++){ if(isset($my_array[$i+1])){ if($my_array[$i] > $my_array[$i+1]){ list($my_array[$i], $my_array[$i+1]) = array($my_array[$i+1], $my_array[$i]); $swapped = true; } } } if ($swapped == false) break; $swapped = false; for($i=count($my_array)-1;$i>=0;$i--){ if(isset($my_array[$i-1])){ if($my_array[$i] < $my_array[$i-1]) { list($my_array[$i],$my_array[$i-1]) = array($my_array[$i-1],$my_array[$i]); $swapped = true; } } } }while($swapped); return $my_array; } $test_array = array(3, 0, 2, 5, -1, 4, 1); echo "原始数组:\n"; echo implode(', ',$test_array ); echo "\n排序后数组\n:"; echo implode(', ',cocktailSort($test_array)). PHP_EOL;
输出:
原始数组: 3, 0, 2, 5, -1, 4, 1 排序后数组 :-1, 0, 1, 2, 3, 4, 5
本篇文章就是关于PHP鸡尾酒(Cocktail)排序算法的完成要领引见,愿望对须要的朋侪有所协助!
以上就是PHP鸡尾酒(Cocktail)排序算法的完成(代码示例)的细致内容,更多请关注ki4网别的相干文章!