ตัวอย่างของบทความนี้บอกวิธีที่ Java ใช้การเรียงลำดับเดือดเพื่อเรียงลำดับอาร์เรย์ แบ่งปันสำหรับทุกคนสำหรับการอ้างอิงของคุณ ข้อมูลเฉพาะมีดังนี้:
1. การเรียงลำดับฟอง:
ใช้การเรียงลำดับเดือดเพื่อจัดเรียงอาร์เรย์
2. แนวคิดพื้นฐาน:
มีการเปรียบเทียบตัวเลขที่อยู่ติดกันสองตัววางด้านหน้าทศนิยมและจำนวนมากอยู่ด้านหลัง นั่นคือในการเดินทางครั้งแรก: ก่อนอื่นเปรียบเทียบตัวเลขแรกและครั้งที่สองให้วางทศนิยมก่อนและจำนวนมาก จากนั้นเปรียบเทียบตัวเลขที่สองและสามให้วางทศนิยมก่อนและหลังจากจำนวนมากให้ดำเนินการต่อไปจนถึงตัวเลขสองตัวสุดท้ายให้วางทศนิยมก่อนและใส่จำนวนมาก ณ จุดนี้จำนวนมากที่สุดถูกตั้งค่าจนถึงจุดสิ้นสุด ในการเดินทางครั้งที่สอง: เริ่มต้นจากคู่แรก (เนื่องจากจำนวนที่สองของหมายเลขที่สองและหมายเลขที่สามอาจลดลงหมายเลขแรกไม่น้อยกว่าหมายเลขที่สองอีกต่อไป) วางทศนิยมหลังจากวางไว้มันถูกเปรียบเทียบ จนกระทั่งหมายเลขสุดท้าย (ตำแหน่งแรกนั้นใหญ่ที่สุด) เป็นผลให้ทำซ้ำกระบวนการข้างต้นจนกว่าคำสั่งซื้อขั้นสุดท้ายจะเสร็จสมบูรณ์
ประการที่สามตระหนักถึงความคิด:
สำหรับการใช้งานคู่ -ล่อง หากมีตัวเลข n ที่จำเป็นต้องจัดเรียงวัฏจักรภายนอกจะทำซ้ำ N-1 ครั้งและรอบด้านในจะทำซ้ำ N-1, N-2, ... , 1 ครั้ง องค์ประกอบทั้งสองที่เปรียบเทียบในแต่ละครั้งเกี่ยวข้องกับวัฏจักรด้านในเจสามารถระบุได้ด้วย [j] และ [j+1] แยกกันและค่าของฉันคือ 1,2, ... , n-1 , n-1 สำหรับค่าของแต่ละ i, j คือ 0,1,2, ... ni
ปล่อยให้ความยาวอาร์เรย์ n:
1. เมื่อเปรียบเทียบกับข้อมูลสองข้อมูลที่อยู่ติดกันสองข้อมูลหากข้อมูลก่อนหน้านี้มากกว่าข้อมูลในภายหลังข้อมูลทั้งสองจะถูกแลกเปลี่ยน
2. ด้วยวิธีนี้ข้อมูลที่ใหญ่ที่สุดคือ "จม" ไปยังตำแหน่ง N-1 ของอาร์เรย์หลังจากหนึ่งผ่านไปยังข้อมูล N-1
3. n = n-1 ถ้า n ไม่ใช่ 0 ให้ทำซ้ำสองขั้นตอนแรกไม่เช่นนั้นการเรียงลำดับจะเสร็จสมบูรณ์
4. การใช้งานรหัส Java:
Package ArrayDemo; / *** @author pplsunny* @category int [] a = {2, 4, 76, 12, 34, 23, 86}; * * ฟังก์ชั่นการเรียงลำดับฟองถูกกำหนดเป็นการใช้งานแบบคงที่และสะดวก ++) { / / / / นี่คือหมายเลขควบคุมสำหรับ (int j = 0; j <a.length -i; j ++) {// j <a.length -i, จำนวนองค์ประกอบเปรียบเทียบถ้า (a (a [j]> a [j + j + 1]) {int temp = a [j];
5. การวิเคราะห์ประสิทธิภาพ:
หากสถานะเริ่มต้นของลำดับการบันทึกคือ "ลำดับบวก" กระบวนการจัดเรียงเดือดจะต้องจัดเรียงเท่านั้นและการเปรียบเทียบ N-1 ในระหว่างกระบวนการจัดเรียงจะดำเนินการโดยไม่มีระเบียนมือถือ 1)/2 การเปรียบเทียบและบันทึกจะต้องดำเนินการ ดังนั้นความซับซ้อนของเวลาทั้งหมดของการเรียงลำดับเดือดคือ o (n*n)
6. การเพิ่มประสิทธิภาพของอัลกอริทึม:
วิธีการขาดและการปรับปรุงวิธีการเรียงลำดับเดือด:
ครั้งแรกในระหว่างกระบวนการจัดเรียงหลังจากดำเนินการตามคำสั่งสุดท้ายแม้ว่าข้อมูลจะได้รับการจัดเรียงอย่างสมบูรณ์โปรแกรมไม่สามารถระบุได้ว่าจะทำการเรียงลำดับให้เสร็จสมบูรณ์หรือไม่ ค่าของค่าเริ่มต้นของมันเป็น non -non -non -non -non -non -non -non -non -non -non -non -non -non -non -enough ค่าชุด แต่ละประเภทถูกตั้งค่าเป็น 0 ก่อนเริ่มการเรียงลำดับ ในตอนต้นของการเรียงลำดับใหม่ให้ตรวจสอบโลโก้นี้
/ *** ฟังก์ชั่นการเรียงลำดับฟองที่ดีขึ้น*/ โมฆะแบบคงที่สาธารณะ (int [] a) {ธงบูลีน = true; ; i ++) {สำหรับ (int j = 0; j <a <a.length -i; j ++) {ถ้า (a [j]> a [j+1]) {int temp = a [j] ; A [J] = A [J + 1];
ประการที่สองในการเรียงลำดับฟองสแกนอาจแลกเปลี่ยนกันนับไม่ถ้วนหรืออาจมีการแลกเปลี่ยนข้อมูลครั้งเดียวหรือหลายครั้ง ข้อมูลตำแหน่งของการแลกเปลี่ยนข้อมูลไม่ได้ถูกประมวลผล เพื่อใช้ประโยชน์จากข้อมูลนี้อย่างเต็มที่ในการสแกนทั่วโลกคุณสามารถทำการเรียงลำดับเดือดร้อนในแต่ละข้อมูลในแต่ละข้อมูลซึ่งเรียกว่าการเรียงลำดับเดือด อัลกอริทึมการเรียงลำดับเดือดและการเรียงลำดับเดือดมีความซับซ้อนในเวลาเดียวกันและภายใต้เงื่อนไขของลำดับบวกและผกผันจำนวนคำหลักที่จำเป็นสำหรับจำนวนคำหลักและการเคลื่อนไหวนั้นเหมือนกัน เนื่องจากจำนวนการเคลื่อนไหวของข้อมูลของการเรียงลำดับเดือดและการเรียงลำดับฟองจะเหมือนกันเสมอจำนวนคำหลักที่จำเป็นสำหรับการเรียงลำดับเดือดในท้องถิ่นมักจะน้อยกว่าการเรียงลำดับเดือดซึ่งหมายความว่าการเรียงลำดับเดือดในท้องถิ่นมีแนวโน้มที่จะเปรียบเทียบจำนวนครั้งเฉลี่ย ค่าเฉลี่ย กว่าของปลอม สำหรับข้อมูลที่ปิดการใช้งาน n เมื่อเราอยู่ในการเรียงลำดับเดือดพ้องถ้ามีการใช้ลำดับข้อมูล K+1 ของข้อมูล K+1 แล้วจะมีการจัดเรียงข้อมูลเดือดของข้อมูลแรกเพื่อให้ย้ายไปยังตำแหน่งที่ถูกต้องนั่นคือ , ให้ข้อมูล K+1 ก่อนหน้าปรับเป็นลำดับบวก เนื่องจากวิธีเดือดนี้เป็นเพียงการเดือดสำหรับข้อมูล K+1 ก่อนหน้านี้เราจึงเรียกมันว่า -local bubbling
หวังว่าบทความนี้จะเป็นประโยชน์กับการออกแบบโปรแกรม Java ของทุกคน