ホームページ  >  記事  >  バックエンド開発  >  PHP はバブルソートのための複数のソリューションを実装します

PHP はバブルソートのための複数のソリューションを実装します

韦小宝
韦小宝オリジナル
2018-02-26 09:47:063661ブラウズ

実際の PHP 開発では多くのソートに遭遇しますが、バブル ソート も一般的なソートの 1 つです。PHP 開発で良い仕事をしたい場合は、PHP を使用して簡単にバブル ソートを実装する必要があります。この記事はこちら PHPバブルソートについて解説します! PHP でバブル ソートを実装するさまざまな方法を見てみましょう。

バブルソートは非常に理解しやすく、実装も簡単です。例として、小さいものから大きいものへのソートを取り上げます。
配列の長さが N であると仮定します。 1.前後の隣接する 2 つのデータを比較し、前者のデータが後者のデータより大きい場合、2 つのデータを交換します。
2.このようにして、配列の 0 番目のデータから N-1 番目のデータまで移動した後、最大のデータは配列の N-1 番目の位置に「沈みます」。
3. N=N-1。N が 0 でない場合は、前の 2 つの手順を繰り返します。そうでない場合は、並べ替えが完了します。

オプション 1:

<?php
function bubble1_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    for ($i = 0; $i < $count; $i++) {
        for ($j = 0; $j < $count; $j++) {
            if ($array[$i] < $array[$j]) {
                $temp = $array[$i];
                $array[$i] = $array[$j];
                $array[$j] = $temp;
            }
        }
    }
    return $array;
}

オプション 2:

<?php
function bubble2_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    for ($i = 0; $i < $count; $i++) {
        for ($j = 1; $j < $count - $i; $j++) {
            if ($array[$j - 1] > $array[$j]) {
                $temp = $array[$j - 1];
                $array[$j - 1] = $array[$j];
                $array[$j] = $temp;
            }
        }
    }
    return $array;
}

オプション 3:

今回交換が発生した場合は true、それ以外の場合は false となるフラグを設定します。もちろん、1回の旅行で交換がなければ、仕分けは完了したことになります。

<?php
function bubble3_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    $flag = true;
    $j = $count;
    while ($flag) {
        $flag = false;
        for ($i = 1; $i < $j; $i++) {
            if ($array[$i - 1] > $array[$i]) {
                $temp = $array[$i - 1];
                $array[$i - 1] = $array[$i];
                $array[$i] = $temp;
                $flag = true;
            }
        }
        $j--;
    }
    return $array;
}

オプション 4:

100 個の数値の配列がある場合、最初の 10 個だけが順序付けされておらず、次の 90 個はすべて並べ替えられており、すべてが最初の 10 個の数値より大きい場合、最初の走査の後、最後に交換が行われる位置は 10 未満である必要があり、この位置の後のデータは順序どおりである必要があり、この位置を記録し、2 回目は配列の先頭からこの位置までトラバースするだけです。

<?php

function bubble4_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    $flag = $count;
    while ($flag > 0) {
        $k = $flag;
        $flag = 0;
        for ($j = 1; $j < $k; $j++) {
            if ($array[$j - 1] > $array[$j]) {
                $temp = $array[$j - 1];
                $array[$j - 1] = $array[$j];
                $array[$j] = $temp;
                $flag = $j;
            }
        }
    }
    return $array;
}

オプション 5:

<?php

function bubble_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    for ($i = $count - 1; $i > 0; $i--) {
        $flag = false;
        for ($j = 0; $j < $count; $j++) {
            if ($array[$j] > $array[$j + 1]) {
                $temp = $array[$j];
                $array[$j] = $array[$j + 1];
                $array[$j + 1] = $temp;
                $flag = true;
            }
        }
        if (!$flag)
            break;
    }
    return $array;
}

上記は、PHP でバブル ソートを実装するためのさまざまな方法であり、1 つの原理を理解すれば、他の 4 つの方法も自然に理解できるようになります。 PHP を学習している皆さんに助けが必要です。


おすすめ関連記事:

phpでバブルソート

クイックソート、挿入ソートを実装: PHPでバブルソート、

選択ソート、挿入ソート、クイックソートを実装...


以上がPHP はバブルソートのための複数のソリューションを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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