บทความนี้อธิบายวิธีการใช้งานการเรียงลำดับค็อกเทลในการเรียงลำดับการแลกเปลี่ยน Java แบ่งปันสำหรับการอ้างอิงของคุณ รายละเอียดมีดังนี้:
การเรียงลำดับค็อกเทลนั่นคือการเรียงลำดับฟองทิศทางการเรียงลำดับค็อกเทลการเรียงลำดับการเรียงลำดับ (ยังถือได้ว่าเป็นการเสียรูปของการเรียงลำดับการเลือก) การเรียงลำดับระลอกคลื่นการเรียงลำดับกลับไปกลับมาหรือการเรียงลำดับชั่วโมงแห่งความสุข ความแตกต่างระหว่างอัลกอริทึมนี้และการเรียงลำดับฟองคือเมื่อเรียงลำดับมันจะถูกจัดเรียงในสองทิศทางในลำดับ
แตกต่างจากการเรียงลำดับฟอง:
การเรียงลำดับค็อกเทลเทียบเท่ากับการเสียรูปเล็กน้อยของการเรียงลำดับฟอง ความแตกต่างคือจากต่ำถึงสูงและสูงถึงต่ำในขณะที่ฟองจัดเรียงจะเปรียบเทียบแต่ละองค์ประกอบในลำดับจากต่ำถึงสูง เขาสามารถได้รับประสิทธิภาพที่ดีกว่าการเรียงลำดับฟองเล็กน้อยเพราะการเรียงลำดับฟองจะถูกเปรียบเทียบจากทิศทางเดียว (จากต่ำถึงสูง) และย้ายเพียงหนึ่งรายการต่อลูป
การทำลำดับ (2,3,4,5,1) เป็นตัวอย่างการเรียงลำดับค็อกเทลต้องใช้เพียงครั้งเดียวในลำดับเพื่อให้เสร็จสิ้นการเรียงลำดับ แต่สี่ครั้งหากใช้การเรียงลำดับฟอง อย่างไรก็ตามในสถานะของลำดับที่ยุ่งเหยิงประสิทธิภาพของการเรียงลำดับค็อกเทลและการเรียงลำดับฟองนั้นแย่มาก
ความซับซ้อนของเวลาที่เลวร้ายที่สุด o (n^2)
ความซับซ้อนของเวลาที่เหมาะสม o (n)
ความซับซ้อนของเวลาเฉลี่ย o (n^2)
ภาพไดนามิกของการเรียงลำดับค็อกเทลมีดังนี้:
การวิเคราะห์รหัส:
แพ็คเกจ com.baobaotao.test; = array.length; j]> อาร์เรย์ [j+1]) {swap (อาร์เรย์, j, j+1); <อาเรย์ [j-1]) {swap (อาร์เรย์, j-1, j);}} printarr (อาร์เรย์); โมฆะคงที่ cocatailsortflag (int [] อาร์เรย์) {int length = array.length; ; = false;}} สำหรับ (int j = length-i-1; j> i; j--) {if (array [j] <array [j-1]) {swap (array, j-1, j) ; จะแลกเปลี่ยนขาเข้า B * @param C จำนวนที่จะแลกเปลี่ยนการแลกเปลี่ยนโมฆะแบบคงที่สาธารณะ (int [] a, int b, int c) {int temp = 0; b]> a [c]) {temp = a [b]; เป็นโมฆะ printarr (int [] array) {สำหรับ (int c: array) {system.out.print (c + ""); int [] number = {11,95,45,15,78,84,51,24,12}; Cocatailsort (หมายเลข);การวิเคราะห์ผลลัพธ์:
11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95 11 12 15 24 45 51 78 84 95 ************ * *** 11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95
จะเห็นได้ว่าจำนวนครั้งที่ค็อกเทลถูกจัดเรียงนั้นน้อยกว่าการจัดเรียงฟองธรรมดา ใช้เวลาเพียง 4 ครั้งและการจัดเรียงโลโก้ค็อกเทลรุ่นที่ได้รับการปรับปรุงใช้เวลาเพียง 3 ครั้งในการเรียงลำดับ
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน