การเรียงลำดับฮีปในโครงสร้างข้อมูล: การใช้งานและประสิทธิภาพ
เผยแพร่แล้ว: 2020-11-23การเรียงลำดับเป็นกระบวนการของการจัดเรียงเอนทิตีในลำดับเฉพาะ เช่น จากน้อยไปมาก จากมากไปน้อย หรือลำดับตัวอักษร การเรียงลำดับโครงสร้างข้อมูลเกี่ยวข้องกับการจัดเรียงข้อมูล หากโดเมนของคุณคือเทคโนโลยีสารสนเทศหรือวิทยาการคอมพิวเตอร์ คุณอาจเคยเจอคำศัพท์ต่างๆ เช่น Quick Sort, Bubble Sort, Merge Sort เป็นต้น
เหล่านี้เป็นอัลกอริธึมการเรียงลำดับที่แตกต่างกันซึ่งขึ้นอยู่กับปัจจัยต่างๆ เช่น โครงสร้างข้อมูล ความซับซ้อน ฯลฯ หนึ่งในอัลกอริธึมการเรียงลำดับยอดนิยมที่เราจะพูดถึงที่นี่คือ Heap Sort คล้ายกันมากกับ Selection Sort โดยที่ค่าสูงสุดจะถูกเลือกและวางไว้ที่ส่วนท้ายของรายการหรืออาร์เรย์ ให้เราขุดลงไปเพื่อทำความเข้าใจสิ่งนี้ให้ดีขึ้น
ใน Heap Sorting ตามชื่อที่แนะนำ ขั้นตอนแรกคือกระบวนการสร้างฮีปหรือการจัดกลุ่มตามเงื่อนไขทั่วไป เราสร้าง Max Heap เพื่อจัดเรียงองค์ประกอบจากน้อยไปมาก เมื่อสร้างฮีปแล้ว เราจะสลับโน้ตรูทกับโหนดสุดท้ายและลบโหนดก่อนหน้าออกจากฮีป
สารบัญ
ความซับซ้อนของเวลาและพื้นที่ของการเรียงลำดับฮีปในโครงสร้างข้อมูล
- ดีที่สุด = Ω(n บันทึก (n))
- ค่าเฉลี่ย = Θ(n บันทึก(n))
- แย่ที่สุด = O(n บันทึก (n))
- ความซับซ้อนของพื้นที่ของ Heap Sort คือ O(1)
ในทำนองเดียวกัน มีแนวคิดของ Max Heap และ Min Heap เช่นเดียวกับต้นไม้และอาร์เรย์ มีโครงสร้างข้อมูลที่เรียกว่าโครงสร้างข้อมูลแบบฮีป (Heap Data Structure) เป็นไบนารีทรีที่สมบูรณ์ซึ่งทำตามกฎว่ารูทโหนดทั้งหมดมีขนาดใหญ่กว่า (สำหรับ Max Heap) หรือเล็กกว่า (สำหรับ Min Heap) กว่าโหนดย่อย กระบวนการนี้เรียกว่า Heapify ภาพด้านล่างเป็นแผนภาพที่อธิบายตนเองของ Min และ Max Heaps
อ่านเพิ่มเติม: การเรียงลำดับในโครงสร้างข้อมูล
ข้อดีและข้อเสียของการใช้ Heap Sort ในโครงสร้างข้อมูล
ข้อดี: ประสิทธิภาพ ประสิทธิภาพ และความแม่นยำที่ปรับให้เหมาะสมเป็นคุณสมบัติที่ดีที่สุดบางประการของอัลกอริธึมนี้ อัลกอริทึมยังมีความสอดคล้องอย่างมากกับการใช้หน่วยความจำที่ต่ำมาก ไม่จำเป็นต้องใช้พื้นที่หน่วยความจำเพิ่มเติมในการทำงาน ซึ่งต่างจาก Merge Sort หรือ Quick Sort แบบเรียกซ้ำ
ข้อเสีย: Heap Sort ถือว่าไม่เสถียร มีราคาแพง และไม่มีประสิทธิภาพมากนักเมื่อทำงานกับข้อมูลที่ซับซ้อนสูง
การประยุกต์ใช้การเรียงลำดับฮีป
คุณอาจเคยเจออัลกอริธึมของ Dijkstra ที่ค้นหาเส้นทางที่สั้นที่สุดซึ่งมีการนำ Heap Sort ไปใช้ การเรียงลำดับฮีปในโครงสร้างข้อมูลจะใช้เมื่อต้องการค่าที่น้อยที่สุด (สั้นที่สุด) หรือสูงสุด (ยาวที่สุด) ทันที การใช้งานอื่นๆ ได้แก่ การค้นหาลำดับในสถิติ การจัดการกับลำดับความสำคัญของคิวในอัลกอริธึมของ Prim (เรียกอีกอย่างว่าโครงสร้างการขยายขั้นต่ำ) และการเข้ารหัสหรือการบีบอัดข้อมูลของ Huffman
ระบบปฏิบัติการต่างๆ ใช้อัลกอริธึมนี้สำหรับงานและการจัดการกระบวนการ เช่นเดียวกับที่ขึ้นอยู่กับคิวลำดับความสำคัญ
นำตัวอย่างจากชีวิตจริง—การเรียงลำดับแบบกองสามารถนำไปใช้กับร้านซิมการ์ดที่มีลูกค้าจำนวนมากในสาย ลูกค้าที่ต้องจ่ายบิลสามารถจัดการก่อนได้เพราะใช้เวลาในการทำงานน้อยกว่า วิธีนี้จะช่วยประหยัดเวลาสำหรับลูกค้าจำนวนมากที่เข้าแถวและหลีกเลี่ยงการรอโดยไม่จำเป็น

เรียนรู้ หลักสูตรวิทยาศาสตร์ข้อมูล จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
ต้องอ่าน: แนวคิดและหัวข้อโครงการโครงสร้างข้อมูล
บทสรุป
สำหรับอัลกอริทึมการเรียงลำดับหรือการค้นหาทุกประเภท ข้อดีและข้อเสียอยู่ที่นั่นเสมอ ด้วยอัลกอริธึม Heap Sorting มีข้อเสียน้อยมาก ไม่มีข้อกำหนดเพิ่มเติมของพื้นที่หน่วยความจำ
ปัจจัยอื่นคือเวลา พบว่าความซับซ้อนของเวลาคำนวณเป็น nlog(n) แต่ Heap Sort จริงนั้นน้อยกว่า O(nlog(n)) เหตุผลก็คือการลดหรือแยกจาก Heap Sort จะลดขนาดลงและใช้เวลาน้อยลงมากเมื่อกระบวนการดำเนินไป
ดังนั้น Heap Sorting จึงถือเป็นหนึ่งในอัลกอริธึมการเรียงลำดับที่ "ดีที่สุด" เนื่องจากเหตุผลต่างๆ ในโลกของโครงสร้างข้อมูล
โครงสร้างข้อมูลและองค์กรเป็นหนึ่งในพื้นฐานของวิทยาการคอมพิวเตอร์ หากความรู้เชิงตรรกะและเชิงปฏิบัติของแต่ละบุคคลมีความแข็งแกร่ง พวกเขาสามารถเชี่ยวชาญในด้านต่างๆ เช่น การเขียนโปรแกรม ไม่ใช่แค่เกี่ยวกับความเป็นเลิศในหลักสูตรเท่านั้น แต่ยังไม่สามารถก้าวไปข้างหน้าในการเขียนโปรแกรมได้หากไม่มีความรู้เกี่ยวกับโครงสร้างข้อมูล
ดังนั้นขั้นตอนต่อไปที่คุณต้องทำคือลงทะเบียนหลักสูตรที่คุณต้องการ ฉันขอแนะนำโครงการริเริ่มการเรียนรู้ตลอดชีวิตของ UpGrad ซึ่งไม่เพียงแค่ครอบคลุมหัวข้อพื้นฐานบางอย่าง เช่น Heap Sort ในโครงสร้างข้อมูล แต่ยังให้ความรู้เกี่ยวกับวิทยาศาสตร์ข้อมูล การจัดการเทคโนโลยี และการตลาดดิจิทัล
สิบหลักสูตรฟรีพร้อมการให้คำปรึกษาในอุตสาหกรรม เซสชันสด การสนทนา 1-1 ใบรับรอง และอีกมากมาย ตรวจสอบลิงค์สำหรับรายละเอียด เพิ่มเติม หากคุณต้องการทราบข้อมูลเพิ่มเติม โปรดติดต่อทีมที่ปรึกษาและผู้ฝึกสอนด้านอาชีพที่เชี่ยวชาญของเรา!
Heapify หมายถึงอะไร
กระบวนการเปลี่ยนต้นไม้ไบนารีเป็นโครงสร้างข้อมูลแบบฮีปเรียกว่า Heapify ต้นไม้ไบนารีเป็นโครงสร้างข้อมูลในรูปทรงของต้นไม้ ซึ่งแต่ละระดับจะเต็ม ยกเว้นโหนดสุดท้าย และโหนดทั้งหมดจะอยู่ห่างจากกันมากที่สุด Heap ควรเป็นไบนารีทรีที่สมบูรณ์ ซึ่งหมายความว่าแต่ละระดับต้นไม้เต็ม ยกเว้นระดับล่างสุด จะเต็มจากซ้ายไปขวาในระดับนี้ ฮีปต้องเป็นไปตามคุณสมบัติลำดับฮีปด้วย ซึ่งระบุว่าค่าที่เก็บไว้ที่แต่ละโหนดมีความสำคัญมากกว่าหรือเท่ากับค่าที่เก็บไว้ที่ลูกหลาน
Heap Sort แตกต่างจาก Selection Sort อย่างไร
วิธีการเรียงลำดับการเลือกจะเรียงลำดับอาร์เรย์โดยการเลือกองค์ประกอบที่เล็กที่สุดอย่างต่อเนื่องจากส่วนที่ไม่ได้เรียงลำดับและแทรกไว้ตั้งแต่เริ่มต้น การวนซ้ำของการเรียงลำดับการเลือกทุกครั้งจะเลือกองค์ประกอบที่เล็กที่สุดจากอาร์เรย์ย่อยที่ไม่ได้เรียงลำดับ และย้ายไปยังอาร์เรย์ย่อยที่จัดเรียง ในทางตรงกันข้าม heapsort จะไม่ใช้เวลาในการสแกนเวลาเชิงเส้นของภูมิภาคที่ไม่ได้จัดเรียง แต่จะเก็บส่วนที่ไม่ได้จัดเรียงไว้ในระหว่างการจัดเรียงฮีปเพื่อค้นหาองค์ประกอบที่ใหญ่ที่สุดในแต่ละขั้นตอนอย่างรวดเร็วยิ่งขึ้น
การใช้งานจริงของ Heap Sorting คืออะไร?
Heap Sorting มีประโยชน์หลายอย่างในชีวิตจริง เมื่อเราต้องการค้นหาค่า Kth ที่เล็กที่สุด (หรือมากที่สุด) ของตัวเลข เราอาจใช้ฮีปเพื่อแก้ปัญหาอย่างรวดเร็วและง่ายดาย การเรียงลำดับทำได้ผ่านการก่อตัวของฮีปในอัลกอริธึม heapsort ซึ่งเป็นวิธีการจัดเรียงรายการในฮีปขั้นต่ำหรือฮีปสูงสุด ฮีปใช้เพื่อนำคิวลำดับความสำคัญไปใช้ โดยมีลำดับความสำคัญกำหนดโดยลำดับที่สร้างฮีป เนื่องจากความซับซ้อนของ O( n log(n) ) ระบบที่เกี่ยวข้องกับความปลอดภัยและระบบฝังตัว เช่น เคอร์เนล Linux จึงใช้ Heap Sort