最後のTCP/IP試験が終わり、私の二年生生活は無情にも終わりを告げた。朝起きると、仲間たちがまだぐっすり眠っていたので、どうしたらいいのか分からず、歩き始めました。 PHP でバブル ソート アルゴリズムを使用して配列をソートするという兄弟の記事を見たとき、私は思わず内心で笑ってしまいました...PHP には非常に多くのソート関数があるのに、なぜ自分でこれを書いたのですか? !後で考えてみると、それは間違いでした。プログラミングは暗記する機械的な練習ではなく、複数の思考の集合体です。アルゴリズムを定期的に練習する目的は、思考を拡張することです。
それで自分で書いてみた…
<p class="sycode"> <? php $array = array ( 10 , 5 , 36 , 86 , 2 , 56 , 9 , 15 , 8 , 4 , 3 , 41 ); $num = count ( $array ); for ( $i = 0 ; $i < $num - 1 ; $i ++ ){ for ( $j = $i + 1 ; $j < $num ; $j ++ ){ if ( $array [ $j ] > $array [ $i ]){//这里交换数组的值 $temp = $array [ $i ]; $array [ $i ] = $array [ $j ]; $array [ $j ] = $temp ; } } } print_r ( $array ); ?> </p>
これが私が書いたバブルソートアルゴリズムで、結果はまだOKです:
<p class="sycode"> ---------- PHP Debug ---------- Array ( [ 0 ] => 86 [ 1 ] => 56 [ 2 ] => 41 [ 3 ] => 36 [ 4 ] => 15 [ 5 ] => 10 [ 6 ] => 9 [ 7 ] => 8 [ 8 ] => 5 [ 9 ] => 4 [ 10 ] => 3 [ 11 ] => 2 )输出完成 (耗时 0 秒) - 正常终止 </p>
見てくださいうまくいくようです成功した Little Joy、もう一つ書いたら問題が出てきた??
<p class="sycode"> <? php $array = array ( 10 , 5 , 36 , 86 , 2 , 56 , 9 , 15 , 8 , 4 , 3 , 41 ); $num = count ( $array ); for ( $i = 0 ; $i < $num - 1 ; $i ++ ){ for ( $j = $i + 1 ; $j < $num ; $j ++ ){ if ( $array [ $j ] > $array [ $i ]){//这里是交换键值 $temp = $i ; $i = $j ; $j = $temp ; } } } print_r ( $array ); ?> </p>
結果はひどいものでした…
<p class="sycode"> ---------- PHP Debug ---------- Array ( [ 0 ] => 10 [ 1 ] => 5 [ 2 ] => 36 [ 3 ] => 86 [ 4 ] => 2 [ 5 ] => 56 [ 6 ] => 9 [ 7 ] => 15 [ 8 ] => 8 [ 9 ] => 4 [ 10 ] => 3 [ 11 ] => 41 )输出完成 (耗时 0 秒) - 正常终止 </p>
どれも置き換えられなかったのですが、なぜですか? ?なぜ? ? ?
通りすがりの人は私にコメントするのを忘れていました...