挿入ソートのPHP学習実装

little bottle
リリース: 2023-04-06 10:40:01
転載
2448 人が閲覧しました

この記事の主な内容は、PHP を使用して挿入ソートを実装することです。シンプルですが古典的なアルゴリズムの問​​題です。覚えているでしょうか。エディターで復習しましょう。

挿入ソートの基本的な考え方: 配列を 2 つの領域 (ソート済み領域と未ソート領域) に分割し、配列の最初の要素がソート済み領域にあるとします。 element それ以降のすべての要素は、ソートされていないセクションにあります。ソートの際は2層のループを使用し、外側のループは未ソート部分からソート対象の要素を取り出し、未ソート部分を徐々に減らしていくのに使用し、内側のループはソート済みの部分から挿入位置を求めるために使用します。は、ソートされた部分から連続します)。ソートされる要素よりも大きい要素を探します)、より大きいソート領域の要素を後方に移動します。後方移動の最終結果は、ソートされた要素の最後の要素です。 area 要素はソート対象の要素の元の位置を占め、ソートされた領域の中央は空の位置にあります)、最後に要素を移動した後に残った空のスペースにソート対象の要素を挿入します。

//插入排序
function insert_sort($arr) {
    //获取数组单元个数
    $count = count($arr);
    //外层循环用于从未排序区域中取出待排序元素
    for ($i=1; $i < $count; $i++) {
        //获取当前需要插入已排序区域的元素值
        $temp = $arr[$i];
        //内层循环用于从已排序区域寻找待排序元素的插入位置
        for ($j=$i-1; $j >= 0; $j--) {
            //如果$arr[$i]比已排序区域的$arr[$j]小,就后移$arr[$j]
            if ($temp < $arr[$j]) {        
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $temp;
            } else {
                //如果$arr[$i]不小于$arr[$j],则对已排序区无需再排序
                break;
            }
        }
    }
    return $arr;
}

$arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1);
var_dump(insert_sort($arr));
  测试结果:
ログイン後にコピー

関連チュートリアル: PHP ビデオ チュートリアル

以上が挿入ソートのPHP学習実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート