Java | 配列を「昇順・降順」に並び替えする

Java Java
スポンサーリンク

配列の昇順・降順ソートをテーマに、レベル別の練習問題(初級 → 中級 → 上級)+すべての解答コードを用意しました。
初心者でも段階的に理解できる構成になっています。


レベル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"};
Java

Q5. 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)
};
Java

Q7. 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));
    }
}
Java

Q2 降順ソート(反転)

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));
    }
}
Java

Q3 元配列を保持してソート

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));
    }
}
Java

Q5 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));
    }
}
Java

Q7 名前の降順でソート

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
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました