備忘録

Paiza CランクレベルアップメニューPHP『ソート』編 解答。

Yj
こんにちは!!続いてソートです。☺️

STEP: 1 昇順ソート

下記の問題はsort( )関数を使いました。こちら参考にしました。

PHP入門編5:連想配列、foreach、ソートを学ぶ

<?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で配列とデータをソートするにはどうすればよいですか?

<?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入門編5:連想配列、foreach、ソートを学ぶ

<?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)

-備忘録

© 2024 Yj Blog Powered by AFFINGER5