ホームページ  >  記事  >  バックエンド開発  >  PHPカクテルソートアルゴリズムの実装(コード例)

PHPカクテルソートアルゴリズムの実装(コード例)

藏色散人
藏色散人オリジナル
2019-03-08 10:14:292352ブラウズ

カクテル ソートは、双方向バブル ソート、シェーカー ソート、リップル ソート、シャッフル ソート、シャトル ソートとも呼ばれます。 バブル ソートの一種であり、安定したソート アルゴリズムであり、比較ソートでもあります。

PHPカクテルソートアルゴリズムの実装(コード例)

このアルゴリズムは、リストを走査するたびに両方向にソートするという点でバブル ソートとは異なります。このソート アルゴリズムは実際にはバブル ソートよりも実装が難しく、バブル ソートのタートル問題を解決します。パフォーマンスはわずかに向上するだけで、漸近的なパフォーマンスは向上しません。バブルと同様、教育には役立ちますが、実用的な意味はありません。

#カクテルソート視覚化アニメーションの例は次のとおりです。

PHPカクテルソートアルゴリズムの実装(コード例)

##PHP カクテルソートコードの例は次のとおりです。 :

<?php
function cocktailSort($my_array)
{
    if (is_string($my_array))
        $my_array = str_split(preg_replace(&#39;/\s+/&#39;,&#39;&#39;,$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(&#39;, &#39;,$test_array );
echo "\n排序后数组\n:";
echo implode(&#39;, &#39;,cocktailSort($test_array)). PHP_EOL;
出力:

原始数组: 3, 0, 2, 5, -1, 4, 1
排序后数组 :-1, 0, 1, 2, 3, 4, 5

この記事は、PHP Cocktail (カクテル) のソート アルゴリズムの実装方法に関する記事です。

以上がPHPカクテルソートアルゴリズムの実装(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。