Java が Arrays クラスを使用して配列を並べ替える方法の詳細な説明
Java プログラミングでは、配列を並べ替える必要があることがよくあります。並べ替えプロセスを簡素化するために、Java は Arrays クラスを提供します。このクラスには、一般的に使用されるいくつかの並べ替えメソッドが含まれています。この記事では、Arrays クラスの並べ替えメソッドを詳細に紹介し、コード例を通じてその使用法を示します。
Arrays クラスには、sort とParallelSort という 2 つのオーバーロードされた並べ替えメソッドが用意されています。前者は配列をシリアルにソートするために使用され、後者は配列を並列にソートするために使用されます。
1.1 sort メソッド
sort メソッドは、配列を順番にソートするために使用されます。複数のオーバーロードされたメソッドがあり、並べ替え要件に基づいてさまざまなメソッドを選択できます。
サンプル コードは次のとおりです。
import java.util.Arrays; public class ArraySortExample { public static void main(String[] args) { int[] arr = {5, 2, 9, 1, 3}; System.out.println("排序前:" + Arrays.toString(arr)); Arrays.sort(arr); System.out.println("排序后:" + Arrays.toString(arr)); } }
実行結果は次のとおりです。
排序前:[5, 2, 9, 1, 3] 排序后:[1, 2, 3, 5, 9]
1.2ParallelSort メソッド
ParallelSort メソッドは並べ替えに使用されます。配列を並列にします。 sort メソッドと比較して、ソート操作をより速く完了でき、大規模な配列に適しています。
サンプル コードは次のとおりです。
import java.util.Arrays; public class ArrayParallelSortExample { public static void main(String[] args) { int[] arr = {5, 2, 9, 1, 3}; System.out.println("排序前:" + Arrays.toString(arr)); Arrays.parallelSort(arr); System.out.println("排序后:" + Arrays.toString(arr)); } }
実行結果は次のとおりです。
排序前:[5, 2, 9, 1, 3] 排序后:[1, 2, 3, 5, 9]
ソートArrays クラスのメソッドは、最適化されたクイック ソート アルゴリズム (デュアル ピボット クイックソート) を使用して、ほとんどの場合に高いパフォーマンスを提供します。このアルゴリズムは分割統治の考え方に基づいており、2 つのピボット要素を選択して配列を 3 つの部分 (ピボット要素より小さい部分、ピボット要素と等しい部分、ピボットより大きい部分) に分割します。要素。次に、分割された 2 つの部分に対してソート操作が再帰的に実行されます。
クイック ソート アルゴリズムの時間計算量は O(nlogn) です。ここで、n は配列の長さです。
配列の並べ替えに Arrays クラスを使用する場合は、次の点に注意する必要があります。
3.1 Comparable インターフェイスは次のことを行う必要があります。
#カスタム クラスのオブジェクト配列を並べ替える場合は、クラスで Comparable インターフェイスを実装し、compareTo メソッドをオーバーライドする必要があります。これにより、並べ替え中にオブジェクトのサイズを正しく比較できるようになります。import java.util.Arrays; class Student implements Comparable<Student> { private String name; private int score; public Student(String name, int score) { this.name = name; this.score = score; } @Override public int compareTo(Student o) { return this.score - o.score; } @Override public String toString() { return name + ": " + score; } } public class StudentSortExample { public static void main(String[] args) { Student[] students = {new Student("Tom", 90), new Student("Jerry", 80)}; System.out.println("排序前:" + Arrays.toString(students)); Arrays.sort(students); System.out.println("排序后:" + Arrays.toString(students)); } }実行結果は以下のとおりです。
排序前:[Tom: 90, Jerry: 80] 排序后:[Jerry: 80, Tom: 90]3.2 並列ソートのパフォーマンスの最適化並列ソートが有効な場合配列の長さがデフォルトのしきい値 (Arrays クラスで使用される 8192) より小さい場合、挿入ソート アルゴリズムがソートに使用されます。挿入ソート アルゴリズムは、小規模データのパフォーマンスが優れています。 並列ソートのパフォーマンスをさらに向上させるために、システム プロパティ
java.util.Arrays.useLegacyMergeSort
を true に設定することで、従来のマージ ソート アルゴリズムの使用を強制できます。これにより、並列ソートの場合に挿入ソートの使用が回避されます。サンプル コードは次のとおりです。
import java.util.Arrays; public class ArrayParallelSortPerformanceExample { public static void main(String[] args) { int[] arr = {5, 2, 9, 1, 3}; System.out.println("排序前:" + Arrays.toString(arr)); System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"); Arrays.parallelSort(arr); System.out.println("排序后:" + Arrays.toString(arr)); } }
概要
以上がJava の Arrays クラスを使用して配列をソートする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。