バブルソートをやるよ
250p
順番に比較
$proto = [7,4,1,8,5,2,9,6,3,0];
1巡目
7と4を比較して大きいほうを右に
4と1を比較して・・・
最後まで
2巡目
最後の一つを除いて同じようにやる
3巡目
最後の2つはやらないで同じようにやる
2重ループになるらしい
どん
内側ののforをこうしていたら
for($i=0; $i<count($hoge); $i++){//1-10巡目
for($n=0; $n<count($hoge); $n++){//1巡の中で判定する
//大きいものをどんどん配列の後ろにやる
if ($hoge[$n]>$hoge[$n+1]){//0番目と1番目を比べて0番目が大きい
$temp = $hoge[$n];//1番目を臨時保存
$hoge[$n+1] = $hoge[$n];//0番目と1番目を交代
$hoge[$n] = $temp;
}
だめでした
すこしカンニングしてやってみた
<?php
$hoge = [7,4,1,8,5,2,9,6,3,0];
for($i=0; $i<count($hoge); $i++){//1-10巡目
for($n=1; $n<count($hoge); $n++){//1巡の中で判定する
//大きいものをどんどん配列の後ろにやる
if ($hoge[$n-1]>$hoge[$n]){//0番目と1番目を比べて0番目が大きい
$temp = $hoge[$n];//1番目を臨時保存
$hoge[$n] = $hoge[$n-1];//0番目と1番目を交代
$hoge[$n-1] = $temp;
}
}
}
?>
これならいい
先生版
最初は「9回の比較」を行う
7/4 4/1 8/5...みたいに9回
phpにはlengthがないので
count関数をつかう
そうすれば配列の長さが分かる
$max = count($hoge)-1;//1回目は9回比較する。
//2回目以降は「最後の数が一番大きいことはわかっているので最後の比較だけはしない」
for($i=0; $i<$max; $i++){
}
$hoge[$i]と$hoge[$i+1]を比べたい
$hoge = [7,4,1,8,5,2,9,6,3,0];
/*先生版*/
$max = count($hoge)-1;//1回目は9回比較する。
//2回目以降は「最後の数が一番大きいことはわかっているので最後の比較だけはしない」
for($i=0; $i<$max; $i++){
if($hoge[$i]>$hoge[$i+1]){
//入れ替え
$temp=$hoge[$i];
$hoge[$i]=$hoge[$i+1];
$hoge[$i+1]=$temp;
}
}
一番大きいのが右端に寄せられた[9]=>9
では外側のループをつけよう
$hoge = [7,4,1,8,5,2,9,6,3,0];
/*先生版*/
$max = count($hoge)-1;//1回目は9回比較する。
//2回目以降は「最後の数が一番大きいことはわかっているので最後の比較だけはしない」
for($j=$max;$j>0;$j-- ){
for($i=0; $i<$j; $i++){
if($hoge[$i]>$hoge[$i+1]){
//入れ替え
$temp=$hoge[$i];
$hoge[$i]=$hoge[$i+1];
$hoge[$i+1]=$temp;
}
}
}