Java で sort()メソッドを使わずに配列をソートする方法

Haider Ali 2023年10月12日
  1. sort() メソッドを使用せずに Java で配列をソートする-バブルソート
  2. sort() メソッドを使用せずに Java で配列をソート-選択ソート
  3. sort() メソッドを使用せずに Java で配列をソートする-挿入ソート
Java で sort()メソッドを使わずに配列をソートする方法

このガイドでは、sort() メソッドを使用せずに Java で配列をソートする方法を説明します。配列をソートするには、一般的に 3つの方法があります。これらの 3つのアルゴリズムは、任意の配列をソートするのに非常に効率的です。これらのアルゴリズムについてもっと学びましょう。

sort() メソッドを使用せずに Java で配列をソートする-バブルソート

最も単純なソートアルゴリズムであるバブルソートの概念を理解しましょう。基本的に、このアルゴリズムでは、配列内の隣接する要素を繰り返し交換します。それらが間違った順序である場合、アルゴリズムは 2つの要素を交換します。プレゼンテーションを参照します。

sort()メソッドを使用せずに Java で配列をソートする-バブルソート

上の写真を見ると、隣接する 2つの要素が入れ替わっていることがわかります。最後に、ソートされた配列ができました。混乱がある場合は、このバブルソートアルゴリズムのコードを見てください。

public class Main {
  public static void main(String[] args) {
    int[] arr = new int[] {5, 4, 3, 8, 32, 768, 564, 95, 172, 1500, 859, 754};
    // Example Array To sort...
    for (int i = 0; i < arr.length; i++) { // Loop over java Array  outer Loop use
      for (int j = i + 1; j < arr.length; j++) { // Loop over java array
        int tmp = 0; // tempraory variable in order to compare.
        if (arr[i] > arr[j]) { // compare outer loop object with inner loop
          tmp = arr[i]; // if greater than swapping.
          arr[i] = arr[j]; // Swaping code here.
          arr[j] = tmp;
        }
      }
    }
    // After Sorting Printing The Value.............

    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
  }
}

出力:

3
4
5
8
32
95
172
564
754
768
859
1500

外側のループは配列を通過するためだけのものであり、内側のループは各パスで隣接する順序付けされていない要素を交換します。最後のパスの終わりに、ソートされた配列が残ります。

sort() メソッドを使用せずに Java で配列をソート-選択ソート

選択ソートアルゴリズムは、配列内の最小要素を検索し、それを配列の先頭に配置することで機能します。パスごとに、次に小さい要素を見つけて次に配置します。最終的に、2つのサブ配列を持つ配列を取得します。1つのサブ配列は、配列の先頭にあるソートされた配列です。他のサブ配列はソートされていないものです。

各パスで、昇順で移動します。最初に最大の要素を見つける場合は、降順で移動します。下の図を見てください。

sort()メソッドを使用せずに Java で配列をソートする-選択ソート

上の図では、動きは降順であり、最初に最大の要素を見つけて最後に配置しています。プレゼンテーションでは、上で説明したように、アレイが 2つのサブアレイに分割されています。

public class Main {
  public static void main(String[] args) {
    int[] arr1 = new int[] {5, 4, 3, 8, 32, 768, 564, 95, 172, 1500, 859, 754};
    int small = -1; // at start there is no small  number....
    for (int i = 0; i < arr1.length; i++) {
      small = i;
      for (int j = i; j <= arr1.length - 1; j++) {
        if (arr1[j] < arr1[small]) {
          small = j;
        }
        // swap values
      }
      int temp = arr1[i];
      arr1[i] = arr1[small];
      arr1[small] = temp;
    }

    for (int i = 0; i < arr1.length; i++) {
      System.out.println(arr1[i]);
    }
  }
}

上記のコード例では、外側のループは配列を通過するように機能します。内側のループは、最小の要素を現在のインデックスの要素と交換します。

sort() メソッドを使用せずに Java で配列をソートする-挿入ソート

挿入ソートは、配列のソートに使用できるもう 1つの単純なソートアルゴリズムです。このアルゴリズムでは、指定された配列も 2つのサブ配列に分割されます。ただし、選択ソートとは異なり、要素はソートされていないサブ配列から選択され、正しい位置に配置されます。下の写真の説明を見てください。

sort()メソッドを使用せずに Java で配列をソートする-挿入ソート

ご覧のとおり、隣接する要素間でスワップしていません。最小の要素を見つけて正しい位置に配置するだけです。最初の要素から繰り返し、最後に向かって進みます。要素はその前の要素と比較され、次に適切な場所が見つかるまでその隣の要素と比較されます。提供された例では、2 が正しい位置に配置される前に 4 回比較されていることがわかります。これがコード例です。

public class Main {
  public static void main(String[] args) { // Insertion Sort....
    int[] arr2 = new int[] {5, 4, 3, 8, 32, 768, 564, 95, 172, 1500, 859, 754};
    int number = arr2.length;
    for (int a = 1; a < number; a++) {
      int keyValue = arr2[a];
      int b = a - 1;
      while (b >= 0 && arr2[b] > keyValue) {
        arr2[b + 1] = arr2[b];
        b = b - 1;
      }
      arr2[b + 1] = keyValue;
    }
    // printing inserion sort............................
    for (int i = 0; i < arr2.length; i++) {
      System.out.println(arr2[i]);
    }
  }
}

これらは、sort 関数を使用せずに Java で配列をソートするために使用できる 3つの方法です。

著者: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn

関連記事 - Java Sort

関連記事 - Java Array