Penyortiran gelembung: Ini untuk mengatur elemen dalam array secara berurutan dari besar ke kecil atau kecil ke besar.
var array = [9,8,7,6,5,4,3,2,1];
Perbandingan Babak Pertama: 8,7,6,5,4,3,2,1,9 bertukar 8 kali i = 0 j = array.length-1-i
Perbandingan Babak Kedua: 7,6,5,4,3,2,1,8,9 ditukar 7 kali i = 1 j = array.length-1-i
Perbandingan putaran ketiga: 6,5,4,3,2,1,7,8,9 swap 6 kali i = 2 j = array.length-1-i
Perbandingan putaran ke-4: 5,4,3,2,1,6,7,8,9 ditukar 5 kali i = 3 j = array.length-1-i
Perbandingan Babak Kelima: 4,3,2,1,5,6,7,8,9 ditukar 4 kali i = 4 j = array.length-1-i
Perbandingan putaran keenam: 3,2,1,4,5,6,7,8,9 ditukar 3 kali i = 5 j = array.length-1-i
Perbandingan putaran ke-7: 2,1,3,4,5,6,7,8,9 ditukar 2 kali i = 6 j = array.length-1-i
Perbandingan putaran ke-8: 1,2,3,4,5,6,7,8,9 bertukar 1 kali i = 7 j = array.length-1-i
Implementasi Kode:
var temp; var array = [9,8,7,6,5,4,3,2,1]; // Jumlah putaran kontrol loop eksternal untuk (var i = 0; i <array.length-1; i ++) {// jumlah waktu perbandingan loop internal (var j = 0; j <array.length-1-i; j +++) (var if = 0; j <array.length-1-i; j +++) {array {var j = 0; j <array.length-1-i; j +++) {array {{var j = 0; j <array.length-1-i; j +++) {array {{var j = 0; j <array.length-1-i; j +++) {array {array {{var j = 0; j <array.length-1-i; j ++) {{var J = 0; // Tukar dua variabel temp = array [j]; array [j] = array [j+1]; array [j+1] = temp; }}} console.log (array);Optimalisasi Kode:
var temp, bool, m = 0; var array = [9,8,7,6,5,4,3,2,1]; untuk (var i = 0; i <array.length-1; i ++) {// sakelar bool dalam prinsip pembukaan dan penutupan bool = true; untuk (var j = 0; j <array.length-1-i; j ++) {if (array [j]> array [j+1]) {// swap dua variabel temp = array [j]; array [j] = array [j+1]; array [j+1] = temp; bool = false; // sakelar sakelar}} // Jika jika di loop dalam tidak dijalankan (sakelar dimatikan, jalankan pernyataan berikut); if (bool) {break; } m ++;} console.log (array+", bandingkan"+m+"roda");Catatan: Kasus terbaik dari putaran perbandingan adalah 0 putaran, dan kasus terburuk adalah 8 putaran.
Mari kita lihat algoritma penyortiran gelembung
// Penyortiran gelembung JavaScript, dan langsung menambahkannya ke prototipe tipe dasar // di sini kita menggunakan kode esensi bahasa JavaScript untuk menambahkan metode ke prototipe tipe dasar. // Karena array dan string sendiri adalah konstruktor, mereka membuat objek melalui garis konstruktor baru, jadi array.prototype dan string.prototype semua titik ke function.prototype // ketika array.method, objek fungsi array akses pertama, tidak ada metode, kemudian fungsi. if (! this.prototype [name]) {// Yang terbaik adalah menilai apakah ada metode ini dalam prototipe terlebih dahulu. Jika this.prototype [name] = func; } kembalikan ini; }; Array.method ('Bubble', function () {// Algoritma gelembung loop panjang array secara total, yaitu, waktu len, dan yang terkecil diletakkan di var len terakhir = this.length; var i = 0, j = 0, tmp = 0; untuk (i = 0; i <len; i ++) {j untuk j (i = 0; i <len; i ++) {j untuk j (i = 0; i <len; i ++) {j untuk (i = 0; i <len; i ++) {j untuk (i = 0; i <len; i ++) {j untuk (i = 0; i <len; i ++) {j untuk (i = 0; i <len; i ++) {j untuk (i = 0; i <len; i ++ {Console.log () if (j]> ini [j+1]) {tmp = ini [j]; peringatan ([21,32,1,31,22,45,68,37,]. Bubble ());Saya melihat kode insinyur front-end lainnya, Xifeng Shouma. Di lapisan pertama untuk loop, bendera pertukaran pertukaran adalah salah. Ketika ada pertukaran, itu menjadi benar. Penilaian ditambahkan setelah lapisan kedua untuk ujung loop. Jika salah, yaitu, tidak ada pertukaran dari depan ke belakang, dan itu membuktikan bahwa urutan ukurannya benar, Anda dapat memutuskan untuk melompat keluar dari luar untuk loop.
// array yang perlu diurutkan var list = array (23, 45, 18, 37, 92, 13, 24); // array panjang var n = list.length; // variabel sementara dalam urutan pertukaran var tmp; /// ukir var exchange; // paling banyak pemesanan n -1 untuk (var waktu = 0; waktu <n - 1; untuk (var i = n - 1; i> waktu; i-) {if (daftar [i] <daftar [i - 1]) {Exchange = true; tmp = daftar [i - 1]; daftar [i]; Daftar [i] = TMP; }} // Jika tidak ada pertukaran dalam urutan ini, algoritma diakhiri lebih awal jika (! Exchange) {break; }} alert ('array diurutkan adalah:' + list + ', n telah diatur secara total' + waktu + 'walk');Saya telah mengumpulkan algoritma netizen sebelumnya, yang cukup bagus. Tolong lihatlah.
function bubblesort (array) {var length = array.length; var temp; var issort = false; untuk (var i = 1; i <panjang; i ++) {issort = false; untuk (var j = 0; j <panjang - i; j ++) {if (array [j]> array [j+1]) {// swap temp = array [j]; array [j] = array [j+1]; array [j+1] = temp; issort = true; }} if (! isSort) break; // Jika tidak ada pertukaran yang terjadi, keluar dari loop}} var array = [10, -3,5,34, -34,5,0,9]; Bubblesort (array); untuk (var i = 0; i <array.length; i ++) {document.write (array [i]+""); }Oke, mari kita ringkas ini untuk Anda hari ini. Saya harap akan sangat membantu bagi teman untuk mempelajari penyortiran gelembung JavaScript.