Bubble Sort adalah salah satu algoritma pengurutan yang lebih sederhana dalam pemrograman. Ini berulang kali menelusuri urutan yang akan diurutkan, membandingkan dua elemen sekaligus dan menukarnya jika urutannya salah. Ulangi pekerjaan mengunjungi array hingga tidak ada lagi elemen yang perlu ditukar, artinya array sudah terurut.
Bubble sort itu seperti gelembung-gelembung yang muncul dari air, dalam bubble sort angka terkecil atau terbesar, tergantung kita mengurutkan array dalam urutan menaik atau menurun, gelembung-gelembung itu muncul di awal atau akhir array.
1) Bandingkan elemen yang berdekatan. Jika elemen pertama lebih besar dari elemen kedua, tukarkan keduanya.
2) Lakukan hal yang sama untuk setiap pasangan elemen yang berdekatan, dimulai dengan pasangan pertama dan diakhiri dengan pasangan terakhir, di mana elemen terakhir harus menjadi bilangan terbesar.
3) Ulangi langkah di atas untuk semua elemen kecuali yang terakhir.
4) Ulangi terus langkah di atas untuk elemen yang semakin sedikit hingga tidak ada pasangan bilangan yang dapat dibandingkan.
Pengurutan gelembung memiliki kinerja yang buruk dibandingkan dengan algoritma pengurutan lainnya seperti pengurutan cepat, pengurutan gabungan, atau pengurutan shell. Kompleksitas kasus rata-rata dari algoritma ini adalah O(nlogn), sedangkan kompleksitas kasus rata-rata dari algoritma bubble sort adalah O(n^2).
Dalam kasus terbaik, bubble sort lebih baik daripada quicksort dengan performa O(n). Pengurutan gelembung tiga kali lebih lambat dibandingkan pengurutan cepat atau pengurutan gabungan, bahkan dengan n=100, namun lebih mudah diterapkan dan diingat.
Kompleksitas dan kinerja bubble sort adalah sebagai berikut:
1) Kinerja kasus terburuk dari bubble sort adalah O(n^2)
2) Performa kasus terbaik dari bubble sort adalah O(n)
3) Performa rata-rata bubble sort adalah O(n^2)
//Bubble sort publicstaticvoidbubbleSort(int[]arr){//Loop luar digunakan untuk mengontrol jumlah putaran loop array for(inti=0;i<arr.length-1;i++){//Bagian dalam loop digunakan untuk Menyelesaikan perbandingan nilai elemen dan menukar nilai elemen yang lebih besar ke belakang for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr [j+1]){inttemp= arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}//Hasil keluaran untuk(intn:nums){Sistem .keluar.println(n);} }
Misalnya:
publicclassMain{publicstaticvoidmain(String[]args){inta[]={6,1,15,32,9};for(inti=1;i<a.length;i++){for(intj=0;j<a .length-1;j++){if(a[j]>a[j+1]){inttemp=a[j];a[j]=a[j+1];a[j+1]=temp ;}}}System.out.println(Hasil pengurutan gelembung adalah:);for(inttemp:a){System.out.print(temp+);}}}
Hasil yang berjalan adalah sebagai berikut:
Hasil dari bubble sort adalah: 1691532
Anda dapat mencobanya sendiri!