下記のような問題があります。
皆さんはどのように解かれますか?
わたしのコードを記載しますので、突っ込みやアドバイスなどあればご教示頂けると助かります。
もっと簡単だよ、こんな関数あるよとかあれば宜しくお願い致します。
問題
以下のPHPプログラムで定義される配列がある。
$array = array(50, 37, 29, 59, 31, 88, 48, 87, 3, 63);
PHPの内部関数でソートせず、小さいものから順に出力せよ。
php
1$rarray = array(50, 37, 29, 59, 31, 88, 48, 87, 3, 62); 2 3$length = count($rarray); 4 5trace($rarray); 6for ($i = 0; $i < $length; $i ++) { 7 for ($j = $i + 1; $j < $length; $j++) { 8 if ($rarray[$i] > $rarray[$j]) { 9 $tmp = $rarray[$i]; 10 $rarray[$i] = $rarray[$j]; 11 $rarray[$j] = $tmp; 12 trace($rarray, $i, $j); 13 } 14 } 15} 16 17foreach ($rarray as $value) { 18 echo $value . "\n"; 19} 20 21function trace($arr, $i = 0, $j = 0) { 22 echo "($i,$j)"; 23 foreach ($arr as $value) { 24 echo $value . ","; 25 } 26 echo "\n"; 27} 28
考え方
例1)自分で配列を小さい順から並ぶように入れ替えてから、for文を使って出力(echo)する。
例2)「配列の中で一番小さい数を出力して、その数を配列から削除する」操作を、
配列が空になるまで繰り返す。
例3)左右で値を比較して、小さい数を左に置いていくいくようにする。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。