如何實(shí)現(xiàn)PHP雞尾酒排序算法?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

雞尾酒排序也稱(chēng)為雙向冒泡排序(bidirectional bubble sort)、搖曳排序(shaker sort)、波紋排序( ripple sort)、洗牌排序(shuffle sort)或穿梭排序( shuttle sort )是冒泡排序的一種變體,它既是一種穩(wěn)定的排序算法,也是一種比較排序。

該算法與冒泡排序的不同之處在于,它在每次遍歷列表時(shí)都在兩個(gè)方向進(jìn)行排序。這種排序算法實(shí)際上比冒泡排序更難以實(shí)現(xiàn),并且解決了冒泡排序中的海龜問(wèn)題。它只提供了微小的性能改進(jìn),并沒(méi)有改善漸近性能; 就像泡沫一樣,雖然它在教育中有用,但它沒(méi)有實(shí)際意義。
雞尾酒排序可視化動(dòng)圖示例如下:

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 "原始數(shù)組:\n";
echo implode(', ',$test_array );
echo "\n排序后數(shù)組\n:";
echo implode(', ',cocktailSort($test_array)). PHP_EOL;輸出:
原始數(shù)組: 3, 0, 2, 5, -1, 4, 1 排序后數(shù)組 :-1, 0, 1, 2, 3, 4, 5
看完上述內(nèi)容,你們掌握如何實(shí)現(xiàn)PHP雞尾酒排序算法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
標(biāo)題名稱(chēng):如何實(shí)現(xiàn)PHP雞尾酒排序算法-創(chuàng)新互聯(lián)
本文鏈接:http://www.chinadenli.net/article12/djdigc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容