Yj
こんにちは!!続いてソートです。☺️
STEP: 1 昇順ソート
下記の問題はsort( )関数を使いました。こちら参考にしました。
<?php $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++){ $array[] = trim(fgets(STDIN)); } sort($array);//少ない方から多い方へ EX)123456789 foreach($array as $value){ echo $value . "\n"; } ?>
下記の問題は選択ソート使いました。こちら参考にしました。
<?php $n = trim(fgets(STDIN));// 3 for($i=0; $i<$n; $i++){ $a[] = trim(fgets(STDIN)); } for($i=0; $i<$n; $i++){//0 1 2 $min = $i;//0 1 2 for($j=$i+1; $j<$n; $j++){// if($a[$min]>$a[$j]){ $min = $j; } } $tmp = $a[$min]; $a[$min] = $a[$i]; $a[$i] = $tmp; echo $a[$i] . "\n"; } ?>
STEP: 2 降順ソート
下記の問題はrsort( )関数を使いました。こちら参考にしました。
<?php $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++){ $array[] = trim(fgets(STDIN)); } rsort($array);//多い方から少ない方へ EX)987654321 foreach($array as $value){ echo $value . "\n"; } ?>
下記の問題はも選択ソート使いました。参考は上記と同様です。
<?php $n = trim(fgets(STDIN));// 3 for($i=0; $i<$n; $i++){ $a[] = trim(fgets(STDIN)); } $n = trim(fgets(STDIN));// 3 for($i=0; $i<$n; $i++){ $a[] = trim(fgets(STDIN)); } for($i=0; $i<$n; $i++){//0 1 2 $max = $i;//0 1 2 for($j=$i+1; $j<$n; $j++){// if($a[$max]<$a[$j]){ $max = $j; } } $tmp = $a[$max]; $a[$max] = $a[$i]; $a[$i] = $tmp; echo $a[$i] . "\n"; } ?>
STEP: 3 辞書式ソート
下記の問題も選択ソート使いました。上記参考にしました。
<?php $row = fgets(STDIN); for ($i = 0; $i < $row; $i++) { $array[] = explode(' ', trim(fgets(STDIN))); //りんご バナナのペア配列に代入 } for($i = 0; $i < $row; $i++) { $min = $i; for($j = $i + 1; $j < $row; $j++) { if ($array[$min] < $array[$j]) { $min = $j; } } $tmp = $array[$min]; $array[$min] = $array[$i]; $array[$i] = $tmp; } foreach ($array as $item) { echo $item[0] . ' ' . $item[1] . "\n"; } ?>
FINAL問題 ソート
下記の問題も選択ソートを使いました。上記参考にしました。
<?php $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++){ $property = explode(" ", trim(fgets(STDIN))); $array[] = $property; } for($i=0; $i<$n; $i++){ $max = $i; for($j= $i+1; $j<$n; $j++){ if($array[$max][1] < $array[$j][1]){ $max = $j; } if($array[$max][1] == $array[$j][1] && $array[$max][0] < $array[$j][0]){ $max =$j; } } $tmp = $array[$max]; $array[$max] = $array[$i]; $array[$i] = $tmp; } foreach ($array as $item) { echo $item[0] . ' ' . $item[1] . "\n"; } ?>
アルゴリズムの選択ソートとてもわかりやすく図解で説明してます。あっこちらはYouTubeです!!アルゴリズム上級 章節選択ソート(Selection Sort)