phpアルゴリズム

1737 ワード

phpクイックソートアルゴリズム
 
基本思想の原理
高速順序付け(Quicksort)は発泡順序付けの改良である.彼の基本思想は:1回のソートを通じて並べ替えられる記録を独立した2つの部分に分割し、そのうちの一部のキーワードはいずれも他の部分が記録したキーワードより小さい場合、それぞれこの2つの部分の記録を迅速にソートし続けることができ、ソート過程全体を再帰的に行うことができ、シーケンス全体の秩序化の目的を達成することができる.
まず配列でデータム値を選択します
配列の中で基準値より大きいものを片側に、基準値より小さいものを他方に、基準値を中間の位置に置く
再帰的にカラムの両側の配列をソートする
 //      
    public function quickSort($array)
    {
        if (count($array) <= 1) {
            return $array;
        }
        $defaultValue = $array[0];
        $leftArray = [];
        $rightArray = [];
        for ($i = 1; $i < count($array); $i++) {
            if ($array[$i] > $defaultValue)
                $rightArray[] = $array[$i];
            else
                $leftArray[] = $array[$i];
        }
        $leftArray = self::quickSort($leftArray);
        $leftArray[] = $array[0];
        $rightArray = self::quickSort($rightArray);
        return array_merge($leftArray, $rightArray);
    }

 
phpバブルアルゴリズム並べ替え
きほんげんり
1.隣接する要素を比較します.1つ目が2つ目より大きい場合は、2つを交換します.
2.各ペアの隣接要素について、最初のペアから最後のペアまで同じ作業を行います.この点では、最後の要素が最大の数になるはずです.
3.すべての要素について、最後の1つを除いて、上記の手順を繰り返します.
4.比較する必要がなくなるまで、より少ない要素に対して上記の手順を繰り返します.
//    
    public function bubbleAlgorithm($array)
    {
        if (!is_array($array)) {
            return false;
        }
        for ($i = 1; $i < count($array); $i++) {
            for ($j = 0; $j < count($array) - $i; $j++) {
                if ($array[$j] > $array[$j + 1]) {
                    $tmp = $array[$j];
                    $array[$j] = $array[$j + 1];
                    $array[$j + 1] = $tmp;
                }
            }
        }
        return $array;
    }