การเรียงลำดับฟอง: มันคือการจัดเรียงองค์ประกอบในอาร์เรย์ตามลำดับจากขนาดใหญ่ถึงเล็กหรือจากขนาดเล็กถึงใหญ่
var array = [9,8,7,6,5,4,3,2,1];
การเปรียบเทียบรอบแรก: 8,7,6,5,4,3,2,2,1,9 สลับ 8 ครั้ง i = 0 j = array.length-1-i
การเปรียบเทียบรอบที่สอง: 7,6,5,4,3,2,1,1,8,9 เปลี่ยน 7 ครั้ง i = 1 j = array.length-1-i
การเปรียบเทียบรอบที่สาม: 6,5,4,3,2,1,7,7,8,9 swap 6 ครั้ง i = 2 j = array.length-1-i
การเปรียบเทียบรอบที่ 4: 5,4,3,2,1,6,7,7,8,9 เปลี่ยน 5 ครั้ง i = 3 j = array.length-1-i
การเปรียบเทียบรอบที่ห้า: 4,3,2,1,5,6,7,7,8,9 เปลี่ยน 4 ครั้ง i = 4 j = array.length-1-i
การเปรียบเทียบรอบที่หก: 3,2,1,4,5,6,7,7,8,9 เปลี่ยน 3 ครั้ง i = 5 j = array.length-1-i
การเปรียบเทียบรอบที่ 7: 2,1,3,4,5,6,7,7,8,9 เปลี่ยน 2 ครั้ง i = 6 j = array.length-1-i
การเปรียบเทียบรอบที่ 8: 1,2,3,4,5,6,7,7,8,9 เปลี่ยน 1 ครั้ง i = 7 j = array.length-1-i
การใช้รหัส:
var temp; var array = [9,8,7,6,5,4,3,2,2,1]; // จำนวนรอบการควบคุมลูปภายนอกสำหรับ (var i = 0; i <array.length-1; i ++) {// จำนวนการควบคุมลูปภายใน (array {array) {array 1] ตัวแปรสองตัวอุณหภูมิ = อาร์เรย์ [j]; อาร์เรย์ [j] = อาร์เรย์ [j+1]; อาร์เรย์ [j+1] = อุณหภูมิ; }}} console.log (อาร์เรย์);การเพิ่มประสิทธิภาพรหัส:
var temp, bool, m = 0; var array = [9,8,7,6,5,4,3,2,1]; สำหรับ (var i = 0; i <array.length-1; i ++) {// สวิตช์บูลในการเปิดและปิดหลักการ bool = true; สำหรับ (var j = 0; j <array.length-1-i; j ++) {ถ้า (อาร์เรย์ [j]> อาร์เรย์ [j+1]) {// เปลี่ยนสองตัวแปรอุณหภูมิ = อาร์เรย์ [j]; อาร์เรย์ [j] = อาร์เรย์ [j+1]; อาร์เรย์ [j+1] = อุณหภูมิ; bool = false; // สวิตช์สวิตช์}} // ถ้า IF ในลูปด้านในไม่ได้ดำเนินการ (สวิตช์ถูกปิดให้ดำเนินการคำสั่งต่อไปนี้); if (bool) {break; } m ++;} console.log (array+", เปรียบเทียบ"+m+"wheel");หมายเหตุ: กรณีที่ดีที่สุดของรอบการเปรียบเทียบคือ 0 รอบและกรณีที่เลวร้ายที่สุดคือ 8 รอบ
มาดูอัลกอริทึมการเรียงลำดับฟอง
// การเรียงลำดับฟอง JavaScript และเพิ่มลงในต้นแบบโดยตรงของประเภทพื้นฐาน // ที่นี่เราใช้รหัส Essence ภาษา JavaScript เพื่อเพิ่มวิธีการลงในต้นแบบประเภทพื้นฐาน // เนื่องจากอาร์เรย์และสตริงเป็นตัวสร้างพวกเขาสร้างวัตถุผ่านสายคอนสตรัคเตอร์ใหม่ดังนั้นอาร์เรย์โปรโตไทป์และสตริง prototype ทั้งหมดชี้ไปที่ฟังก์ชัน. prototype // เมื่อ array.method, ฟังก์ชันการเข้าถึงของตัวเอง func) {ถ้า (! this.prototype [ชื่อ]) {// เป็นการดีที่สุดที่จะตัดสินว่ามีวิธีนี้ในต้นแบบก่อนหรือไม่ ถ้า this.prototype [ชื่อ] = func; } ส่งคืนสิ่งนี้; - Array.method ('Bubble', function () {// อัลกอริทึมฟองวนความยาวของอาร์เรย์ทั้งหมดนั่นคือ Len Times และอันที่เล็กที่สุดจะถูกวางไว้ที่ var len = this.length; var i = 0, j = 0, tmp = 0; สำหรับ (i = 0; j ++) {console.log () ถ้า (j]> สิ่งนี้ [j+1]) {tmp = สิ่งนี้ [j]; การแจ้งเตือน ([21,32,1,31,22,45,68,37,]. Bubble ());ฉันดูรหัสของ Xifeng Shouma วิศวกรด้านหน้าอีกคนหนึ่ง ในเลเยอร์แรกของสำหรับลูปธงแลกเปลี่ยนแลกเปลี่ยนเป็นเท็จ เมื่อมีการแลกเปลี่ยนมันจะกลายเป็นจริง คำพิพากษาจะถูกเพิ่มหลังจากเลเยอร์ที่สองของการวนรอบสิ้นสุด หากเป็นเท็จนั่นคือไม่มีการแลกเปลี่ยนจากด้านหน้าไปด้านหลังและพิสูจน์ได้ว่าคำสั่งขนาดถูกต้องคุณสามารถแยกออกจากด้านนอกเพื่อลูป
// อาร์เรย์ที่ต้องจัดเรียงรายการ var = อาร์เรย์ (23, 45, 18, 37, 92, 13, 24); // ความยาวอาร์เรย์ var n = list.length; // ตัวแปรชั่วคราวในการแลกเปลี่ยนคำสั่งซื้อ var tmp; /////แลกเปลี่ยนค่าสถานะการแลกเปลี่ยน สำหรับ (var i = n - 1; i> time; i-) {ถ้า (รายการ [i] <list [i - 1]) {exchange = true; tmp = list [i - 1]; รายการ [i]; รายการ [i] = tmp; }} // หากไม่มีการแลกเปลี่ยนในลำดับนี้อัลกอริทึมจะถูกยกเลิกก่อนหน้านี้หาก (! Exchange) {break; }} การแจ้งเตือน ('เรียงลำดับอาร์เรย์คือ:' + list + ', n ถูกจัดเรียงในทั้งหมด' + เวลา + 'เดิน');ฉันได้รวบรวมอัลกอริทึมของ Netizen มาก่อนซึ่งค่อนข้างดี โปรดดูที่
ฟังก์ชั่น bubblesort (อาร์เรย์) {var length = array.length; var temp; var issort = false; สำหรับ (var i = 1; i <length; i ++) {issort = false; สำหรับ (var j = 0; j <length - i; j ++) {ถ้า (array [j]> array [j+1]) {// swap temp = array [j]; อาร์เรย์ [j] = อาร์เรย์ [j+1]; อาร์เรย์ [j+1] = อุณหภูมิ; issort = true; }} if (! issort) break; // หากไม่มีการแลกเปลี่ยนเกิดขึ้นให้ออกจากลูป}} var array = [10, -3,5,34, -34,5,0,9]; Bubblesort (อาร์เรย์); สำหรับ (var i = 0; i <array.length; i ++) {document.write (array [i]+""); -โอเคมาสรุปสิ่งเหล่านี้ให้คุณวันนี้ ฉันหวังว่ามันจะเป็นประโยชน์สำหรับเพื่อน ๆ ในการเรียนรู้การเรียงลำดับฟอง JavaScript