วิธีการใช้ Merge Sort ใน C ++ พร้อมตัวอย่าง



บทความนี้จะให้ข้อมูลที่ละเอียดและครอบคลุมเกี่ยวกับ Merge Sort ใน C ++ วิธีการทำงานกับตัวอย่าง

การเรียงลำดับการผสานคืออะไร? Merge sort คืออัลกอริทึมการเรียงลำดับตามการเปรียบเทียบที่อยู่ในหมวดหมู่การแบ่งและการพิชิต การเรียงลำดับการผสานใช้เพื่อจัดเรียงอาร์เรย์ตามกลยุทธ์การแบ่งและพิชิตซึ่งจะกล่าวถึงสั้น ๆ ในโพสต์นี้พร้อมกับแนวคิดอื่น ๆ เช่นอัลกอริทึมพร้อมตัวอย่าง นอกจากนี้เราจะดูความซับซ้อนของเวลาของการเรียงลำดับการผสานใน C ++

คำแนะนำต่อไปนี้จะกล่าวถึงในบทความนี้





ไปต่อกับบทความนี้ใน Merge Sort ใน C ++

ขั้นตอนวิธีการแบ่งและพิชิต

หากคุณคุ้นเคยกับวิธีการทำงานของ Quicksort แล้วคุณอาจทราบถึงกลยุทธ์การแบ่งและพิชิต Divide and Conquer เกี่ยวข้องกับสามขั้นตอนหลัก ๆ เพื่อทำความเข้าใจขั้นตอนเหล่านี้ให้พิจารณาอาร์เรย์สวัสดี [] ที่มีดัชนีเริ่มต้น 'a' และดัชนีสิ้นสุด 'n' ดังนั้นเราจึงสามารถเขียนอาร์เรย์ของเราได้ด้วยวิธีต่อไปนี้สวัสดี [a & hellip..n]



การแบ่ง - ขั้นตอนสำคัญหรือขั้นตอนสำคัญของการแบ่งและพิชิตคือการแบ่งปัญหาที่กำหนดออกเป็นปัญหาย่อยหรือส่วนย่อย ข้อสังเกตคือปัญหาย่อยควรคล้ายกับปัญหาเดิมและมีขนาดเล็กกว่า ในกรณีของเราเราจะแบ่งอาร์เรย์ของเราออกเป็น 2 ส่วน [a & hellip.m] [m + 1 & hellip..n] m อยู่ตรงกลางของดัชนี a และ n

พิชิต - เมื่อเราแบ่งปัญหาของเราออกเป็นปัญหาย่อยเรียบร้อยแล้ว เราแก้ไขปัญหาย่อยเหล่านี้ซ้ำ ๆ

รวม - ในขั้นตอนนี้เรารวมวิธีแก้ปัญหาย่อยทั้งหมดของเราด้วยวิธีที่เหมาะสม กล่าวอีกนัยหนึ่งคือเรารวมอาร์เรย์ที่เรียงลำดับ 2 อาร์เรย์ที่แตกต่างกันเพื่อสร้างอาร์เรย์ที่เรียงลำดับหนึ่ง เรามีอาร์เรย์เรียงลำดับ



ไปต่อกับบทความนี้ใน Merge Sort ใน C ++

การทำความเข้าใจ Merge Sort Algorithm พร้อมตัวอย่าง

ณ จุดนี้เรารู้ว่าการเรียงลำดับการผสานจะใช้แนวทางใด ลองพิจารณาตัวอย่างและทำแต่ละขั้นตอนตั้งแต่ Hello [] ที่ไม่ได้เรียงลำดับไปจนถึงอาร์เรย์ที่เรียงลำดับ
ตัวอย่าง - สวัสดี [10, 3, 7, 1, 15, 14, 9, 22]

Merge-sort-in-C++

ในภาพด้านบนเราพิจารณาอาร์เรย์ที่ไม่ได้เรียงลำดับและใช้การจัดเรียงแบบผสานเพื่อรับอาร์เรย์ที่เรียงลำดับ ตอนนี้เรามาดูแต่ละขั้นตอนและทำความเข้าใจอัลกอริทึมทั้งหมด

1. อันดับแรกเราพิจารณาอาร์เรย์สวัสดี [10, 3, 7, 1, 15, 14, 9, 22] ในอาร์เรย์นี้มีทั้งหมด 8 องค์ประกอบ

tostring ทำงานอย่างไรใน java

2. ดังที่เราเห็นก่อนหน้านี้การเรียงลำดับการผสานใช้วิธีการแบ่งและพิชิตเพื่อจัดเรียงองค์ประกอบ เราพบ m ซึ่งอยู่ตรงกลางอาร์เรย์ของเราและแบ่งอาร์เรย์ของเราจากตรงกลางโดยที่ m = (a - n) / 2 'a' คือดัชนีขององค์ประกอบทางซ้ายสุดและ n คือดัชนีขององค์ประกอบทางขวาสุดของอาร์เรย์ของเรา .

3. หลังจากการแบ่งส่วนแรกเรามี 2 ส่วนประกอบด้วย 4 องค์ประกอบแต่ละส่วน มาดูครึ่งแรก [10, 3, 7, 1]

4. เราหาร [10, 3, 7, 1] เป็น 2 ส่วน [10, 3] และ [7, 1] หลังจากนั้นให้แบ่งออกเป็น [10], [3], [7], [1] ไม่สามารถหารเพิ่มเติมได้เนื่องจากเราคำนวณม. ไม่ได้ รายการที่มีองค์ประกอบเดียวจะถือว่าเรียงลำดับเสมอ

5. การรวมเกิดขึ้นได้อย่างไร? มาดูกัน [10] แรกและ [3] ถูกเปรียบเทียบและรวมตามลำดับจากน้อยไปมาก [3, 10] ในลักษณะเดียวกับที่เราได้รับ [1, 7]

6. หลังจากนั้นเราจะเปรียบเทียบ [3, 10] และ [1, 7] เมื่อเปรียบเทียบแล้วเราจะรวมมันตามลำดับจากน้อยไปมากและเราจะได้ [1, 3, 7, 10]

7. [15, 14, 9, 2] ยังแบ่งและรวมกันในลักษณะเดียวกันกับรูปแบบ [9, 14, 15, 22]

8. ในขั้นตอนสุดท้ายเราเปรียบเทียบและรวม [15, 14, 9, 2] [9, 14, 15, 22] เพื่อให้เราได้อาร์เรย์ที่จัดเรียงเช่น [1, 3, 7, 9, 10, 14, 15, 22]

ไปต่อกับบทความนี้ใน Merge Sort ใน C ++

Pseudocode สำหรับ Merge Sort

เริ่มต้นหากปล่อยไว้

ฟังก์ชัน mergeSort () เรียกตัวเองซ้ำ ๆ เพื่อแบ่งอาร์เรย์ของเราจนกว่าจะกลายเป็นองค์ประกอบเดียวและฟังก์ชัน merge () จะใช้เพื่อผสานอาร์เรย์ที่เรียงลำดับ

ไปต่อกับบทความนี้ใน Merge Sort ใน C ++

ผสานโปรแกรมการเรียงลำดับใน C ++

#include #include #include โดยใช้ namespace std void merge (int a [], int Firstindex, int m, int Lastindex) // ผสานอาร์เรย์ย่อยที่สร้างขึ้นในขณะที่หารเป็นโมฆะ mergeSort (int a [], int Firstindex, int Lastindex) {if (Firstindexsize int สวัสดี [size] ฉัน cout<<'Enter the elements of the array one by one:n' for(i=0 i>สวัสดี [i] mergeSort (สวัสดี 0 ขนาด - 1) cout<<'The Sorted List isn' for(i=0 i

เอาท์พุท -

เธรด daemon คืออะไร

ไปต่อกับบทความนี้ใน Merge Sort ใน C ++

ความซับซ้อนของเวลา

ความซับซ้อนของเวลาเป็นสิ่งสำคัญที่ต้องพิจารณาเมื่อเราพูดถึงอัลกอริทึม การเรียงลำดับการผสานถือว่ามีความซับซ้อนของเวลามากเมื่อเทียบกับอัลกอริทึมการเรียงลำดับอื่น ๆ

เวลาทำงานที่เลวร้ายที่สุด - O (n log n)
เวลาทำงานที่ดีที่สุด - O (n log n)
เวลาทำงานโดยเฉลี่ย - O (n log n)

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของบทความ Merge Sort ใน C ++ หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด