Rumah  >  Artikel  >  Java  >  Penjelasan terperinci tentang kaedah Java menggunakan kelas Arrays untuk menyusun tatasusunan

Penjelasan terperinci tentang kaedah Java menggunakan kelas Arrays untuk menyusun tatasusunan

PHPz
PHPzasal
2023-07-25 10:13:342334semak imbas

Penjelasan terperinci tentang cara Java menggunakan kelas Array untuk mengisih tatasusunan

Dalam pengaturcaraan Java, selalunya perlu untuk mengisih tatasusunan. Untuk memudahkan proses pengisihan, Java menyediakan kelas Array, yang mengandungi beberapa kaedah pengisihan yang biasa digunakan. Artikel ini akan memperkenalkan kaedah pengisihan kelas Array secara terperinci dan menunjukkan penggunaannya melalui contoh kod.

  1. Kaedah isihan kelas Arrays

Kelas Arrays menyediakan dua kaedah pengisihan terlebih beban, iaitu isihan dan parallelSort. Yang pertama digunakan untuk mengisih tatasusunan secara bersiri, manakala yang terakhir digunakan untuk mengisih tatasusunan secara selari.

1.1 kaedah isihan

Kaedah isihan digunakan untuk menyusun tatasusunan secara bersiri. Ia mempunyai berbilang kaedah terlebih beban, dan kaedah berbeza boleh dipilih berdasarkan keperluan pengisihan.

Kod sampel adalah seperti berikut:

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

Keputusan yang dijalankan adalah seperti berikut:

排序前:[5, 2, 9, 1, 3]
排序后:[1, 2, 3, 5, 9]

1.2 kaedah Isih selari

Kaedah Isih selari digunakan untuk mengisih tatasusunan secara selari. Berbanding dengan kaedah isihan, ia boleh menyelesaikan operasi isihan dengan lebih cepat dan sesuai untuk tatasusunan berskala lebih besar.

Kod sampel adalah seperti berikut:

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

Hasil yang dijalankan adalah seperti berikut:

排序前:[5, 2, 9, 1, 3]
排序后:[1, 2, 3, 5, 9]
  1. Algoritma isihan

Kaedah pengisihan dalam kelas Arrays menggunakan algoritma isihan pantas yang dioptimumkan (Dual-Pivot Quicksort), yang menyediakan Quicksort Dwi-Pivot prestasi yang lebih baik dalam kebanyakan kes Prestasi tinggi. Algoritma ini berdasarkan idea bahagi dan takluk, dengan memilih dua elemen pangsi untuk membahagikan tatasusunan kepada tiga bahagian: bahagian yang lebih kecil daripada elemen pangsi, bahagian yang sama dengan elemen pangsi, dan bahagian yang lebih besar daripada pangsi. unsur. Kemudian operasi pengisihan dilakukan secara rekursif pada dua bahagian yang dibahagikan.

Kerumitan masa bagi algoritma isihan pantas ialah O(nlogn), dengan n ialah panjang tatasusunan.

  1. Nota

Apabila menggunakan kelas Tatasusunan untuk menyusun tatasusunan, anda perlu memberi perhatian kepada perkara berikut:

3.1 Perlu melaksanakan antara muka Setanding

Jika anda ingin mengisih tatasusunan objek kelas tersuai, kelas mesti melaksanakan antara muka Sebanding, dan mengatasi kaedah compareTo. Ini membolehkan saiz objek dibandingkan dengan betul semasa proses pengisihan.

Kod sampel adalah seperti berikut:

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

Keputusan yang dijalankan adalah seperti berikut:

排序前:[Tom: 90, Jerry: 80]
排序后:[Jerry: 80, Tom: 90]

3.2 Pengoptimuman prestasi pengisihan selari

Apabila pengisihan selari boleh digunakan, jika panjang tatasusunan kurang daripada ambang lalai (8192 digunakan dalam kelas Tatasusunan), Algoritma isihan sisipan akan digunakan untuk pengisihan. Algoritma isihan sisipan mempunyai prestasi yang lebih baik pada data berskala kecil.

Untuk meningkatkan lagi prestasi pengisihan selari, anda boleh memaksa penggunaan algoritma isihan gabungan tradisional dengan menetapkan sifat sistem java.util.Arrays.useLegacyMergeSort kepada benar. Ini mengelakkan penggunaan isihan sisipan dalam kes isihan selari. 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));
    }
}
  1. 总结

本文详细介绍了Java中使用Arrays类进行数组排序的方法。通过调用sort方法可以对数组进行串行排序,而调用parallelSort方法可以对数组进行并行排序。并行排序的性能优于串行排序,适用于大规模数据。在使用自定义类的对象数组进行排序时,需要实现Comparable接口。同时,通过设置java.util.Arrays.useLegacyMergeSort

Kod sampel adalah seperti berikut: 🎜rrreee
    🎜Ringkasan🎜🎜🎜Artikel ini memperincikan kaedah menggunakan kelas Tatasusunan untuk menyusun tatasusunan dalam Java. Tatasusunan boleh diisih secara bersiri dengan memanggil kaedah isihan, dan tatasusunan boleh diisih secara selari dengan memanggil kaedah parallelSort. Pengisihan selari mempunyai prestasi yang lebih baik daripada pengisihan bersiri dan sesuai untuk data berskala besar. Apabila menggunakan tatasusunan objek kelas tersuai untuk mengisih, anda perlu melaksanakan antara muka Sebanding. Pada masa yang sama, dengan menetapkan harta java.util.Arrays.useLegacyMergeSort kepada benar, prestasi pengisihan selari boleh dioptimumkan lagi. Menguasai kaedah pengisihan kelas Arrays boleh menangani masalah pengisihan tatasusunan dengan lebih cekap dalam pengaturcaraan. 🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang kaedah Java menggunakan kelas Arrays untuk menyusun tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn