冒泡排序法 |
Kaedah pengisihan gelembung Algoritma gelembung banyak dibincangkan dalam buku teks bahasa C tradisional. Ia adalah algoritma pengisihan yang agak stabil. Apabila anda menggunakan algoritma pengisihan ini, anda boleh memikirkan bentuk pelaksanaannya daripada namanya. Apabila bercakap tentang menggelegak, perkara pertama yang terlintas di fikiran ialah ikan kecil berenang di dalam air, meludahkan rentetan buih kecil dan naik ke permukaan air. Sebenarnya, kaedah pengisihan buih adalah sama seperti buih meletus Ia hanya meludah keluar satu demi satu, dan meludahkannya satu demi satu secara berterusan. Idea utama algoritma isihan gelembung adalah untuk membandingkan dua nombor bersebelahan dan kemudian bertukar kedudukan mengikut keperluan saiz. Mari kita mulakan dengan tatasusunan dua elemen yang paling mudah dan buat inferens dari sana. Katakan terdapat hanya dua elemen di dalam tatasusunan "int array = {8, 0};". Apabila menyusunnya, kita hanya perlu membuat satu pertimbangan untuk mengetahui elemen mana yang lebih besar dan elemen mana yang lebih kecil dengan mengandaikan bahawa kita menyusun dari kecil ke besar, hasil susunan itu hendaklah "array = {0, 8};". Mari kita lihat tatasusunan dengan tiga elemen. Katakan terdapat hanya dua elemen di dalam tatasusunan "int array = {8, 0, 1};". Kemudian kita masih melakukan perbandingan berpasangan Dalam perbandingan pertama, kita boleh menyimpulkan bahawa tatasusunan hendaklah "tatasusunan = {0, 1, 8};", dan hanya satu perbandingan diperlukan untuk melengkapkan pengisihan tatasusunan. Tetapi jika tatasusunan mengubah kedudukan elemen, iaitu, "int array = {8, 1, 0};", maka mari kita lihat semula Perbandingan berpasangan pertama bagi elemen menjadi "array = {1, 0,. 8} ;", jadi apabila menghadapi situasi yang melampau ini, kaedah gelembung tidak dapat melengkapkan pengisihan dengan satu perbandingan, maka perbandingan kedua harus dilakukan. Akhir sekali, dalam perbandingan kedua kita boleh mendapatkan hasil "array = {0, 1, 8}; "Mari kita lihat pengisihan tatasusunan apabila terdapat empat elemen. Kali ini kita mengambil kes ekstrem, iaitu menukar tatasusunan yang disusun dari besar ke kecil kepada tatasusunan yang disusun dari kecil ke besar. Tatasusunan ialah "int array = {9, 8, 1, 0};". Kemudian pada masa ini, perbandingan pertama dua elemen bersebelahan boleh menghasilkan "tatasusunan = {8, 1, 0, 9};", dan perbandingan kedua unsur bersebelahan boleh menghasilkan "tatasusunan = {1, 0, 8, 9} ;", perbandingan berpasangan ketiga boleh menghasilkan "array = {0, 1, 8, 9};". Berdasarkan analisis di atas, kita boleh tahu bahawa jika tatasusunan mempunyai n elemen yang perlu diisih, kes pengisihan yang melampau hendaklah n-1 kali. Proses pengisihan khusus adalah seperti berikut.
Proses pengisihan gelembung
Jadi berdasarkan analisis di atas, kita boleh menulis kod seperti berikut.
Seterusnya, kami mengubah suai atur cara supaya ia mencetak proses membandingkan dua elemen bersebelahan pada setiap langkah, seperti yang ditunjukkan dalam Rajah 5-4-3 yang ditunjukkan . Kita dapat melihat bahawa unsur-unsur yang lebih besar akan perlahan-lahan "terapung" ke bahagian atas jujukan melalui pertukaran (disusun dalam susunan menaik atau menurun), sama seperti rentetan buih yang diludahkan oleh ikan emas kecil di dalam air, perlahan-lahan muncul dari air, maka nama "Bubble sort".
Isih gelembung pencetakan satu langkah
Isih pilihan
Pilih Isih pemilihan isihan , yang biasanya dikenali sebagai "menggigit penyisihan peluru", sudah tentu, "menggigit penyisihan peluru" ini adalah nama yang saya berikan, kerana ia adalah kaedah pengisihan yang paling intuitif dan mentafsirkan empat perkataan "estetika ganas" dengan sempurna. Untuk memahami pengisihan pemilihan, mula-mula bayangkan bagaimana guru menyusun pasukan dalam kelas pendidikan jasmani di sekolah rendah. Pertama, pilih secara rawak seorang pelajar di antara kanak-kanak yang difikirkan oleh guru adalah yang paling pendek dan biarkan dia menjadi ketua kemudian bandingkan pelajar lain dengannya secara bergilir-gilir. dia akan diletakkan di hadapan Kemudian secara visual memeriksa yang kedua, dan seterusnya. Sudah tentu perenggan di atas menerangkan pemikiran dalaman guru pendidikan jasmani. Apabila kita mengisih tatasusunan, kita juga boleh menggunakan kaedah ini. Mula-mula kita boleh menetapkan barisan hadapan. Katakan kita ingin menyusun dari kecil ke besar, maka kita mula-mula menganggap bahawa elemen pertama adalah elemen terkecil dalam tatasusunan, dan kemudian membandingkannya dengan unsur-unsur yang selebihnya jika didapati lebih kecil daripada itu, kemudian Tukar sendiri dengan elemen itu Dengan cara ini, anda hanya perlu melintasi keseluruhan tatasusunan dan meletakkan elemen terkecil pada kedudukan elemen pertama. Seperti yang ditunjukkan di bawah.
Isih pilihan melakukan perbandingan traversal
Dalam gambar di atas, kami menggunakan perbandingan traversal pertama untuk memisahkan elemen terkecil Tersusun ke hujung paling kiri tatasusunan, apa yang perlu kita lakukan seterusnya ialah membandingkan baki 9 elemen sekali gus, cari nilai minimum, dan kemudian letakkannya di sebelah kanan 0, dan seterusnya, kita boleh menulis seperti yang ditunjukkan dalam rajah di bawah prosedur pengisihan pemilihan.
Atas ialah kandungan terperinci Gunakan bahasa Java untuk melaksanakan algoritma pengisihan gelembung dan pemilihan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!