Contoh Sort Bubble, Sortir Gelembung Bidirectional Dengan Visualisasi Sortir Gelembung Bidirectional yang Sedikit Ditingkatkan.
Kode ini sangat sederhana, saya tidak tahu apakah ada bug yang tidak diketahui.
Tuhan, tolong jangan mengeluh
Contoh penyortiran gelembung
var ls = [ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,1 3.14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,80,45,64,52,79,77 ]; untuk (var i = 0; i <ls.length; i ++) {for (var j = i+1; j <ls.length; j ++) {if (ls [i]> ls [j]) {ls [i] = ls [i]+ls [j]; ls [j] = ls [i] -ls [j]; ls [i] = ls [i] -ls [j]; }}}Contoh penyortiran gelembung dua arah
var ls = [ 6,13,98,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,1 3.14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,80,45,64,52,79,77 ]; untuk (var i = 0; i <ls.length; i ++) {for (var j = i+1; j <ls.length-i; j ++) {if (ls [lent-1-i] <ls [lent-j]) {ls [lent-1-i] = ls [lent-1-i]+ls [lent-j]; ls [lent-j] = ls [lent-1-i] -ls [lent-j]; ls [pinjam-1-i] = ls [pinjam-1-i] -ls [pinjamkan-j]; ls [pinjam-1-i] = ls [pinjam-1-i] -ls [pinjamkan-j]; } // Perbandingan berikut if (ls [i]> ls [j]) {ls [i] = ls [i]+ls [j]; ls [j] = ls [i] -ls [j]; ls [i] = ls [i] -ls [j]; } // Perbandingan sebelumnya}}Contoh jenis gelembung dua arah yang sedikit lebih baik
var ls = [ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,1 3.14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,80,45,64,52,79,77 ]; var lent = ls.length; for (var i = 0; i <ls.length; i ++) {for (var j = i*2; j <ls.length-2*i; j ++) {if (ls [i*2]> ls [j+1]) {ls [i*2] = ls [i*2]+ls [j+1]) {ls [i*2] = ls [i*2]+ls [j+1]) {ls [i*2] = ls [i*2]+ls [j+1]) {ls [i*2] = ls [i*2]+ls [j+1] ls [j+1] = ls [i*2] -ls [j+1]; ls [i*2] = ls [i*2] -ls [j+1]; ls [i*2] = ls [i*2] -ls [j+1]; } // Simpan nomor pertama di lapisan dalam sebagai loop minimum IF (ls [lent-i*2-1] <ls [lent-j-1]) {ls [lent-i*2-1] = ls [lent-i*2-1]+ls [lent-j-j-j-1]; ls [lent-j-1] = ls [lent-i*2-1] -ls [lent-j-1]; ls [lent-i*2-1] = ls [lent-j-1]; } //// Pertahankan jumlah kedua dari lapisan dalam ke siklus maksimum if (ls [lent-2-i*2] <ls [lent-j-j-1]) {ls [lent-2-i*2] = ls [lent-2-i*2]+ls [lent-j-j-1]; ls [lent-j-1] = ls [lent-2-i*2] -ls [lent-j-1]; ls [lent-2-i*2] = ls [lent-j-1]; ls [lent-2-i*2] = ls [lent-j-1]; ls [lent-2-i*2] = ls [lent-j-1]; } // Receprocate yang terakhir if (ls [i*2+1]> ls [j+1]) {ls [i*2+1] = ls [i*2+1]+ls [j+1]; ls [j+1] = ls [i*2+1] -ls [j+1]; ls [i*2+1] = ls [i*2+1] -ls [j+1]; }//Berikutnya}}