Analisis kerumitan masa dan senario aplikasi isihan gelembung Java
[Pengenalan]
Isih Buih ialah algoritma pengisihan asas. Ia berfungsi dengan berulang kali bertukar-tukar elemen luar tertib bersebelahan sehingga urutan itu diisih. Kerumitan masa isihan gelembung adalah tinggi, tetapi pelaksanaannya mudah dan sesuai untuk mengisih data berskala kecil.
【Prinsip Algoritma】
Prinsip algoritma isihan gelembung adalah sangat mudah. Pertama, dua elemen bersebelahan dibandingkan dari jujukan, dan jika susunannya salah, kedudukan ditukar kemudian, setiap pasangan elemen bersebelahan dalam jujukan dibandingkan dan ditukar secara bergilir-gilir, sehingga keseluruhan jujukan diisih.
【Pseudocode】
Berikut ialah contoh pseudocode bagi jenis gelembung:
function bubbleSort(arr): n = arr.length for i = 0 to (n-1): for j = 0 to (n-1-i): if arr[j] > arr[j+1]: swap(arr[j], arr[j+1]) return arr
【Analisis kerumitan masa】
Kerumitan masa isihan gelembung bergantung pada bilangan elemen n. Dalam kes terbaik, jujukan sudah teratur, dan hanya satu pusingan perbandingan diperlukan untuk menentukan bahawa pengisihan selesai, dan kerumitan masa ialah O(n). Dalam kes yang paling teruk, urutan diterbalikkan sepenuhnya, memerlukan n operasi gelembung, dan kerumitan masa ialah O(n^2). Secara purata, kerumitan masa juga O(n^2). Oleh itu, kerumitan masa jenis gelembung ialah O(n^2).
[Senario Aplikasi]
Isihan buih mempunyai kerumitan masa yang tinggi, jadi ia tidak sesuai untuk mengisih data berskala besar. Walau bagaimanapun, disebabkan pelaksanaannya yang mudah dan logik yang jelas, ia merupakan pilihan yang lebih baik untuk menyusun data berskala kecil. Senario aplikasinya termasuk:
【Contoh Kod Java】
Berikut ialah kod contoh isihan gelembung yang dilaksanakan dalam Java:
public class BubbleSort { public static void main(String[] args) { int[] arr = {5, 2, 8, 9, 1}; bubbleSort(arr); System.out.println(Arrays.toString(arr)); } public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n-1; i++) { for (int j = 0; j < n-1-i; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } }
Contoh kod di atas menunjukkan cara menggunakan isihan gelembung untuk mengisih tatasusunan integer. Hasil larian ialah [1, 2, 5, 8, 9].
[Ringkasan]
Walaupun jenis gelembung mempunyai kerumitan masa yang tinggi, pelaksanaannya ringkas dan mudah difahami. Ia sesuai untuk mengisih data berskala kecil, terutamanya apabila anda perlu melaksanakan algoritma pengisihan secara manual atau mengisih tatasusunan tersusun secara asasnya. Walau bagaimanapun, isihan gelembung berprestasi buruk apabila berurusan dengan data berskala besar, jadi penggunaannya dalam senario ini tidak disyorkan.
Atas ialah kandungan terperinci Menganalisis kerumitan masa dan kebolehgunaan jenis gelembung Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!