Java | レベル別の配列のソート練習問題

Java Java
スポンサーリンク

初心者から少しずつステップアップできるように、レベル別のソート練習問題を作りました。各問題に「課題 → ステップ解説 → 解答コード」をつけています。


レベル1(基礎)

問題

整数の配列 {5, 2, 8, 1, 3}昇順(小さい順)に並べ替えて表示してください。

ステップ解説

  1. 配列を用意する。
  2. Arrays.sort() を使って昇順に並べ替える。
  3. Arrays.toString() で結果を表示する。

解答コード

import java.util.Arrays;

public class Level1 {
    public static void main(String[] args) {
        int[] nums = {5, 2, 8, 1, 3};
        Arrays.sort(nums); 
        System.out.println(Arrays.toString(nums)); 
        // 出力: [1, 2, 3, 5, 8]
    }
}
Java

レベル2(応用:降順)

問題

整数の配列 {10, 4, 7, 2, 9}降順(大きい順)に並べ替えて表示してください。

ステップ解説

  1. Arrays.sort() でまず昇順に並べる。
  2. 並べ替えた配列を前後入れ替えて逆順にする。
  3. 結果を表示する。

解答コード

import java.util.Arrays;

public class Level2 {
    public static void main(String[] args) {
        int[] nums = {10, 4, 7, 2, 9};
        Arrays.sort(nums); // 昇順: [2, 4, 7, 9, 10]
        for (int left = 0, right = nums.length - 1; left < right; left++, right--) {
            int tmp = nums[left];
            nums[left] = nums[right];
            nums[right] = tmp;
        }
        System.out.println(Arrays.toString(nums)); 
        // 出力: [10, 9, 7, 4, 2]
    }
}
Java

レベル3(文字列ソート)

問題

文字列の配列 {"Banana", "apple", "Orange", "grape"}アルファベット順(A→Z)に並べ替えて表示してください。
ただし、大文字小文字は区別しないで並べ替えること。

ステップ解説

  1. 配列を用意する。
  2. Arrays.sort()String.CASE_INSENSITIVE_ORDER を渡す。
  3. 結果を表示する。

解答コード

import java.util.Arrays;

public class Level3 {
    public static void main(String[] args) {
        String[] fruits = {"Banana", "apple", "Orange", "grape"};
        Arrays.sort(fruits, String.CASE_INSENSITIVE_ORDER);
        System.out.println(Arrays.toString(fruits)); 
        // 出力: [apple, Banana, grape, Orange]
    }
}
Java

レベル4(応用:Comparatorで降順)

問題

整数の配列 {15, 3, 27, 9, 12}降順(大きい順)に並べ替えて表示してください。
ただし、Comparator.reverseOrder() を使う方法で解いてください。

ステップ解説

  1. int[] ではなく Integer[] を使う(ラッパークラス)。
  2. Arrays.sort()Comparator.reverseOrder() を渡す。
  3. 結果を表示する。

解答コード

import java.util.Arrays;
import java.util.Comparator;

public class Level4 {
    public static void main(String[] args) {
        Integer[] nums = {15, 3, 27, 9, 12};
        Arrays.sort(nums, Comparator.reverseOrder());
        System.out.println(Arrays.toString(nums)); 
        // 出力: [27, 15, 12, 9, 3]
    }
}
Java

レベル5(チャレンジ)

問題

生徒の名前と点数を持つ配列を「点数の高い順」に並べ替えて表示してください。
例: {"Sato:70", "Tanaka:85", "Suzuki:60", "Kato:90"} → 点数順に並べ替え。

ステップ解説

  1. 名前と点数を文字列で持つ。
  2. Arrays.sort() に独自の Comparator を渡す。
  3. Comparator 内で「: の後ろの数字」を取り出して比較する。
  4. 降順に並べ替える。

解答コード

import java.util.Arrays;
import java.util.Comparator;

public class Level5 {
    public static void main(String[] args) {
        String[] students = {"Sato:70", "Tanaka:85", "Suzuki:60", "Kato:90"};
        
        Arrays.sort(students, new Comparator<String>() {
            public int compare(String a, String b) {
                int scoreA = Integer.parseInt(a.split(":")[1]);
                int scoreB = Integer.parseInt(b.split(":")[1]);
                return Integer.compare(scoreB, scoreA); // 降順
            }
        });
        
        System.out.println(Arrays.toString(students));
        // 出力: [Kato:90, Tanaka:85, Sato:70, Suzuki:60]
    }
}
Java

まとめ

  • レベル1: 昇順の基本
  • レベル2: 降順(逆順処理)
  • レベル3: 文字列ソート(大小無視)
  • レベル4: Comparatorで降順
  • レベル5: 独自Comparatorで複雑な条件ソート

これで、初心者から応用まで段階的にソートを練習できます。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました