Rumah >Java >javaTutorial >Java menulis algoritma isihan sisipan dan menghasilkan hasil

Java menulis algoritma isihan sisipan dan menghasilkan hasil

PHPz
PHPzasal
2024-02-19 16:27:21930semak imbas

Java menulis algoritma isihan sisipan dan menghasilkan hasil

Kod contoh dan hasil larian pelaksanaan Java bagi isihan sisipan

Isihan sisipan ialah algoritma isihan yang mudah dan biasa digunakan yang digunakan secara meluas dalam aplikasi praktikal. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk melaksanakan isihan sisipan dan memberikan contoh kod yang sepadan dan hasil yang dijalankan.

Idea asas isihan sisipan ialah membahagikan tatasusunan untuk diisih kepada dua bahagian, diisih dan tidak diisih Pada mulanya, bahagian yang diisih hanya mempunyai satu elemen, dan kemudian unsur-unsur bahagian yang tidak diisih dimasukkan ke dalam kedudukan yang sesuai. daripada bahagian yang diisih mengikut urutan sehingga Semua elemen dimasukkan.

Berikut ialah contoh kod untuk melaksanakan isihan sisipan dalam Java:

public class InsertionSort {
    public static void insertionSort(int[] arr) {
        int n = arr.length;
        for (int i = 1; i < n; i++) {
            int key = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j -= 1;
            }
            arr[j + 1] = key;
        }
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 10, 8, 3};
        System.out.println("排序前:");
        printArray(arr);
        insertionSort(arr);
        System.out.println("排序后:");
        printArray(arr);
    }

    public static void printArray(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

Kaedah insertionSort dalam kod melaksanakan algoritma isihan sisipan. Ia menggunakan gelung luar untuk melelar melalui setiap elemen bahagian yang tidak diisih, memasukkan elemen ke dalam kedudukan yang sesuai dalam bahagian yang diisih. Gelung dalam mencari kedudukan sisipan yang sesuai dalam bahagian yang diisih dan menggerakkan elemen yang lebih besar daripada elemen semasa ke belakang. insertionSort方法实现了插入排序算法。它使用一个外层循环遍历未排序部分的每个元素,将元素插入到已排序部分的合适位置。内层循环则是在已排序部分中寻找合适的插入位置,将比当前元素大的元素往后移动。

main方法中,我们定义了一个整型数组arr,初始化了一组无序的元素。首先输出了排序前的数组,然后调用insertionSort

Dalam kaedah utama, kami mentakrifkan tatasusunan integer arr dan memulakan set elemen tidak tertib. Mula-mula, tatasusunan sebelum mengisih ialah output, kemudian kaedah insertionSort dipanggil untuk mengisih, dan akhirnya tatasusunan yang diisih ialah output.

Hasil larian adalah seperti berikut:

排序前:
5 2 10 8 3 
排序后:
2 3 5 8 10 

Anda boleh melihat bahawa selepas diproses dengan algoritma isihan sisipan, tatasusunan asal tidak tertib telah berjaya diisih dari kecil ke besar.

Kerumitan masa isihan sisipan ialah O(n^2), dan prestasinya lebih baik apabila memproses set data berskala kecil. Walau bagaimanapun, untuk set data berskala besar, prestasi isihan sisipan akan menurun dengan ketara dan tidak sebaik algoritma pengisihan cekap yang lain. Oleh itu, dalam pembangunan sebenar, adalah perlu untuk memilih algoritma pengisihan yang sesuai mengikut situasi tertentu. 🎜

Atas ialah kandungan terperinci Java menulis algoritma isihan sisipan dan menghasilkan hasil. 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