Bandingkan dua elemen bersebelahan. Jika yang pertama lebih besar daripada yang kedua, tukar kedudukan mereka (dalam tertib menaik, begitu juga sebaliknya dalam tertib menurun).
Bandingkan setiap pasangan elemen bersebelahan dalam urutan dari awal hingga akhir senarai. Dengan cara ini, elemen dengan nilai terbesar "gelembung" ke penghujung senarai melalui pertukaran, melengkapkan pusingan pertama "gelembung".
Ulang langkah sebelumnya dan teruskan membandingkan elemen bersebelahan dari permulaan senarai. Elemen yang telah "berbuih" tidak perlu dibandingkan (anda boleh membandingkannya sehingga akhir. Elemen yang telah "berbuih" ke belakang tidak perlu ditukar walaupun ia dibandingkan. Tidak membandingkan boleh mengurangkan langkah).
Teruskan membuat perbandingan bermula dari senarai, dan satu elemen akan "bergelembung" dengan jayanya dalam setiap pusingan perbandingan. Bilangan elemen yang perlu dibandingkan dalam setiap pusingan akan berkurangan sehingga hanya tinggal satu elemen sahaja yang tidak "bergelembung" (tiada pasangan elemen yang perlu dibandingkan), kemudian penyusunan senarai selesai.
Ambil tatasusunan satu dimensi ini sebagai contoh:
int[] array = new int[]{55,33,22,66,11};
Rajah ① ialah carta lajur bagi susunan permulaan data dalam pusingan pertama "gelembung". ditukar, jika tidak, tiada pertukaran akan berlaku."
tatasusunan[0]=55 >
Pusingan pertama demonstrasi "gelembung" adalah seperti yang ditunjukkan dalam rajah:
Pusingan kedua menggelegak
Rajah ④ menunjukkan carta lajur pesanan permulaan data dalam pusingan kedua "gelembung";
tatasusunan[2]55 > ditukar, seperti yang ditunjukkan dalam Rajah ⑥;
Pusingan kedua demonstrasi "gelembung" adalah seperti yang ditunjukkan dalam rajah:
Pusingan ketiga daripada menggelegak
Rajah ⑥ menunjukkan carta lajur jujukan permulaan data dalam pusingan ketiga "buih"
tatasusunan[0] =22 < tatasusunan[1]=33, syarat tidak dipenuhi, dan susunan kedudukan unsur-unsur tidak ditukar, seperti yang ditunjukkan dalam Rajah ⑥; =33 > tatasusunan[2]=11, jika syarat dipenuhi, tukarkan susunan kedudukan elemen, seperti yang ditunjukkan dalam Rajah ⑦; demonstrasi adalah seperti berikut Seperti yang ditunjukkan dalam rajah:
Rajah ⑦ menunjukkan lajur tertib permulaan data dalam pusingan keempat rajah bentuk "gelembung";
tatasusunan[0]=22 > " dan "11", seperti yang ditunjukkan dalam Rajah ⑧ ;
Pusingan keempat demonstrasi "gelembung" ditunjukkan dalam rajah:
Pada ketika ini, proses pengisihan buih tatasusunan selesai La!
public class BubbleSort { public static void sort(int array[]) { //i表示第几轮“冒泡”,j 表示“走访”到的元素索引。 // 每一轮“冒泡”中,j 需要从列表开头“走访”到 array.length - 1 的位置。 for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1 - i; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } }}
import java.util.Arrays;public class TestMain { public static void main(String[] args) { int[] array = new int[]{55, 33, 22, 66, 11}; //输出排序前的array数组 System.out.print("排序前:"); System.out.println(Arrays.toString(array)); //调用BubbleSort类中的sort方法对array数组进行排序 BubbleSort.sort(array); //输出冒泡排序后的array数组 System.out.print("排序后:"); System.out.println(Arrays.toString(array)); }}
Atas ialah kandungan terperinci Bagaimana untuk menulis kod untuk melaksanakan jenis gelembung dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!