初心者から少しずつステップアップできるように、レベル別のソート練習問題を作りました。各問題に「課題 → ステップ解説 → 解答コード」をつけています。
レベル1(基礎)
問題
整数の配列 {5, 2, 8, 1, 3} を 昇順(小さい順)に並べ替えて表示してください。
ステップ解説
- 配列を用意する。
Arrays.sort()を使って昇順に並べ替える。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} を 降順(大きい順)に並べ替えて表示してください。
ステップ解説
Arrays.sort()でまず昇順に並べる。- 並べ替えた配列を前後入れ替えて逆順にする。
- 結果を表示する。
解答コード
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)に並べ替えて表示してください。
ただし、大文字小文字は区別しないで並べ替えること。
ステップ解説
- 配列を用意する。
Arrays.sort()にString.CASE_INSENSITIVE_ORDERを渡す。- 結果を表示する。
解答コード
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() を使う方法で解いてください。
ステップ解説
int[]ではなくInteger[]を使う(ラッパークラス)。Arrays.sort()にComparator.reverseOrder()を渡す。- 結果を表示する。
解答コード
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"} → 点数順に並べ替え。
ステップ解説
- 名前と点数を文字列で持つ。
Arrays.sort()に独自のComparatorを渡す。Comparator内で「:の後ろの数字」を取り出して比較する。- 降順に並べ替える。
解答コード
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で複雑な条件ソート
これで、初心者から応用まで段階的にソートを練習できます。
