配列の昇順・降順ソートをテーマに、レベル別の練習問題(初級 → 中級 → 上級)+すべての解答コードを用意しました。
初心者でも段階的に理解できる構成になっています。
レベル1(初級)
Q1. 整数配列を昇順に並び替えて表示しなさい。
配列:
int[] data = {5, 1, 4, 2, 3};
Java出力(例):[1, 2, 3, 4, 5]
Q2. 整数配列を降順に並び替えて表示しなさい。
ヒント:
プリミティブ int[] は reverseOrder() が使えない。
→ 昇順ソート → 自分で「反転」する。
Q3. 元の配列を保持したまま、コピーした配列だけソートしなさい。
配列:
int[] scores = {80, 50, 95, 70};
Java出力例:
元の配列: [80, 50, 95, 70]
ソート後: [50, 70, 80, 95]
レベル2(中級)
Q4. String 配列を降順(辞書順の逆)にソートしなさい。
配列:
String[] names = {"sato", "tanaka", "ando", "yamada"};
JavaQ5. Integer 配列を昇順 → 降順 の2つを出力しなさい。
配列:
Integer[] nums = {10, 3, 7, 1, 5};
Javaレベル3(上級)
Q6. Person クラス配列を「年齢の昇順」でソートしなさい。
class Person {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
}
Person[] people = {
new Person("Aki", 30),
new Person("Bun", 22),
new Person("Cao", 28)
};
JavaQ7. Q6 の Person 配列を「名前の降順」でソートしなさい。
ヒント:Comparator<Person> を使う。
【レベル1 解答】
Q1 昇順ソート
import java.util.Arrays;
public class Q1 {
public static void main(String[] args) {
int[] data = {5, 1, 4, 2, 3};
Arrays.sort(data);
System.out.println(Arrays.toString(data));
}
}
JavaQ2 降順ソート(反転)
import java.util.Arrays;
public class Q2 {
public static void main(String[] args) {
int[] data = {5, 1, 4, 2, 3};
Arrays.sort(data); // 昇順
// 逆順へ反転
for (int f = 0, l = data.length - 1; f < l; f++, l--) {
int tmp = data[f];
data[f] = data[l];
data[l] = tmp;
}
System.out.println(Arrays.toString(data));
}
}
JavaQ3 元配列を保持してソート
import java.util.Arrays;
public class Q3 {
public static void main(String[] args) {
int[] scores = {80, 50, 95, 70};
int[] sorted = Arrays.copyOf(scores, scores.length);
Arrays.sort(sorted);
System.out.println("元の配列: " + Arrays.toString(scores));
System.out.println("ソート後: " + Arrays.toString(sorted));
}
}
Java【レベル2 解答】
Q4 String を降順でソート
import java.util.Arrays;
import java.util.Collections;
public class Q4 {
public static void main(String[] args) {
String[] names = {"sato", "tanaka", "ando", "yamada"};
Arrays.sort(names, Collections.reverseOrder());
System.out.println(Arrays.toString(names));
}
}
JavaQ5 Integer 配列を昇順 & 降順
import java.util.Arrays;
import java.util.Collections;
public class Q5 {
public static void main(String[] args) {
Integer[] nums = {10, 3, 7, 1, 5};
// 昇順
Integer[] asc = nums.clone();
Arrays.sort(asc);
// 降順
Integer[] desc = nums.clone();
Arrays.sort(desc, Collections.reverseOrder());
System.out.println("昇順: " + Arrays.toString(asc));
System.out.println("降順: " + Arrays.toString(desc));
}
}
Java【レベル3 解答】
Q6 Person を年齢昇順にソート
import java.util.Arrays;
import java.util.Comparator;
class Person {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
public String toString() { return name + "(" + age + ")"; }
}
public class Q6 {
public static void main(String[] args) {
Person[] people = {
new Person("Aki", 30),
new Person("Bun", 22),
new Person("Cao", 28)
};
Arrays.sort(people, Comparator.comparingInt(p -> p.age));
System.out.println(Arrays.toString(people));
}
}
JavaQ7 名前の降順でソート
import java.util.Arrays;
import java.util.Comparator;
class Person {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
public String toString() { return name + "(" + age + ")"; }
}
public class Q7 {
public static void main(String[] args) {
Person[] people = {
new Person("Aki", 30),
new Person("Bun", 22),
new Person("Cao", 28)
};
Arrays.sort(people, (p1, p2) -> p2.name.compareTo(p1.name));
System.out.println(Arrays.toString(people));
}
}
Java