Rumah >Java >javaTutorial >Kaedah dan prinsip menulis algoritma isihan sisipan dalam Java
Langkah dan idea algoritma isihan sisipan
Isihan sisipan ialah algoritma isihan yang mudah dan intuitif ialah memasukkan unsur-unsur yang hendak diisih ke dalam kedudukan yang sesuai bagi urutan yang diisih.
Langkah khusus adalah seperti berikut:
Berikut ialah contoh kod untuk menulis algoritma isihan sisipan dalam bahasa 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--; } arr[j + 1] = key; } } public static void main(String[] args) { int[] arr = {5, 2, 8, 1, 9, 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(); } }
Dalam contoh kod ini, kami mentakrifkan kaedah insertionSort
yang menerima tatasusunan integer sebagai parameter dan melaksanakan fungsi pada tatasusunan Lakukan isihan sisipan. Kami menggunakan n
untuk mewakili panjang tatasusunan dan menggunakan for
untuk melingkari elemen bahagian yang tidak diisih. Dalam setiap traversal, kami menyimpan elemen semasa arr[i]
ke dalam pembolehubah key
, dan kemudian melintasi bahagian yang diisih ke hadapan untuk mencari kedudukan yang sesuai untuk memasukkan kunci
. Semasa proses perbandingan, kami mengalihkan elemen yang lebih besar ke belakang satu kedudukan untuk memberi ruang kepada kunci
. Akhir sekali, kami memasukkan key
ke dalam kedudukan yang betul dan pengisihan selesai. insertionSort
方法,它接受一个整数数组作为参数,并对数组进行插入排序。我们用n
表示数组的长度,并使用for
循环遍历未排序部分的元素。在每一次遍历中,我们将当前元素arr[i]
保存到key
变量中,然后向前遍历已排序部分,找到合适的位置插入key
。在比较的过程中,我们将较大的元素往后移动一位,为key
腾出位置。最后,我们将key
插入到正确的位置上,排序完成。
在main
方法中,我们初始化一个整数数组arr
,并调用insertionSort
方法对数组进行排序。最后,我们调用printArray
utama
, kami memulakan tatasusunan integer arr
dan memanggil kaedah insertionSort
untuk mengisih tatasusunan. Akhir sekali, kami memanggil kaedah printArray
untuk mencetak tatasusunan yang diisih. Dengan menjalankan kod di atas, anda boleh mendapatkan output berikut: 原数组: 5 2 8 1 9 3 排序后的数组: 1 2 3 5 8 9Kerumitan masa bagi algoritma isihan sisipan ialah O(n^2), dengan n ialah panjang tatasusunan. Walaupun algoritma isihan sisipan mempunyai kerumitan masa yang tinggi, pelaksanaannya adalah mudah dan sesuai untuk pengisihan tatasusunan berskala kecil. Pada masa yang sama, dalam aplikasi praktikal, algoritma isihan sisipan juga mempunyai ciri-ciri kestabilan. 🎜
Atas ialah kandungan terperinci Kaedah dan prinsip menulis algoritma isihan sisipan dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!