Penjelasan terperinci tentang algoritma isihan gelembung Java dan kaedah pelaksanaan biasa
Pengenalan:
Isih gelembung ialah algoritma pengisihan asas yang mengisih dengan membandingkan dan menukar elemen bersebelahan. Walaupun kerumitan masa isihan gelembung adalah tinggi (O(n^2)), disebabkan pelaksanaannya yang mudah, ia adalah asas untuk memahami algoritma pengisihan dan juga merupakan salah satu soalan biasa dalam temu bual. Artikel ini akan memperkenalkan secara terperinci prinsip, langkah dan kaedah pelaksanaan biasa algoritma isihan gelembung Java, dan juga memberikan contoh kod.
1. Prinsip dan langkah:
Idea asas penyisihan gelembung adalah untuk membandingkan elemen yang akan diisih dari awal hingga akhir Jika elemen bersebelahan berada dalam susunan terbalik, tukarkannya sehingga keseluruhan jujukan. Langkah-langkah khusus adalah seperti berikut:
public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 交换相邻元素的位置 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }Pengisihan gelembung yang dioptimumkan:
public static void bubbleSortOptimized(int[] arr) { int n = arr.length; boolean swapped; // 标识是否有交换操作 for (int i = 0; i < n - 1; i++) { swapped = false; for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 交换相邻元素的位置 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true; } } // 如果没有进行任何交换,说明已经有序,直接退出循环 if (!swapped) { break; } } }
public static void main(String[] args) { int[] arr = {64, 34, 25, 12, 22, 11, 90}; System.out.println("排序前:"); for (int num : arr) { System.out.print(num + " "); } bubbleSortOptimized(arr); System.out.println(" 排序后:"); for (int num : arr) { System.out.print(num + " "); } }
Kesimpulan:
Isih buih ialah algoritma pengisihan yang mudah tetapi kurang cekap yang mencapai pengisihan melalui perbandingan dan pertukaran antara elemen bersebelahan. Artikel ini memperkenalkan prinsip, langkah dan kaedah pelaksanaan biasa algoritma isihan gelembung Java secara terperinci dan memberikan contoh kod untuk ujian dan pengesahan. Dalam aplikasi praktikal, kita boleh memilih jenis gelembung biasa atau jenis gelembung yang dioptimumkan mengikut keadaan tertentu untuk meningkatkan kecekapan pengisihan.
Atas ialah kandungan terperinci Analisis mendalam algoritma isihan gelembung Java dan kaedah pelaksanaan biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!