

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)