HOWTO · Java
Java で sort()メソッドを使わずに配列をソートする方法
sort()メソッドを使用せずに Java で配列をソートする方法を学ぶ
このページの内容
このガイドでは、sort() メソッドを使用せずに Java で配列をソートする方法を説明します。配列をソートするには、一般的に 3つの方法があります。これらの 3つのアルゴリズムは、任意の配列をソートするのに非常に効率的です。これらのアルゴリズムについてもっと学びましょう。
sort() メソッドを使用せずに Java で配列をソートする-バブルソート
最も単純なソートアルゴリズムであるバブルソートの概念を理解しましょう。基本的に、このアルゴリズムでは、配列内の隣接する要素を繰り返し交換します。それらが間違った順序である場合、アルゴリズムは 2つの要素を交換します。プレゼンテーションを参照します。
上の写真を見ると、隣接する 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つのサブ配列は、配列の先頭にあるソートされた配列です。他のサブ配列はソートされていないものです。
各パスで、昇順で移動します。最初に最大の要素を見つける場合は、降順で移動します。下の図を見てください。
上の図では、動きは降順であり、最初に最大の要素を見つけて最後に配置しています。プレゼンテーションでは、上で説明したように、アレイが 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つのサブ配列に分割されます。ただし、選択ソートとは異なり、要素はソートされていないサブ配列から選択され、正しい位置に配置されます。下の写真の説明を見てください。
ご覧のとおり、隣接する要素間でスワップしていません。最小の要素を見つけて正しい位置に配置するだけです。最初の要素から繰り返し、最後に向かって進みます。要素はその前の要素と比較され、次に適切な場所が見つかるまでその隣の要素と比較されます。提供された例では、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つの方法です。