วีดีโอ: ความซับซ้อนของอัลกอริธึมการเรียงลำดับฮีปคืออะไร?
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
การเรียงลำดับฮีปเป็นอัลกอริทึมแบบแทนที่ ความซับซ้อนของเวลา : ความซับซ้อนของเวลา ของ heapify คือ O(Logn) ความซับซ้อนของเวลา ของ createAndBuildHeap() คือ O(n) และโดยรวม ความซับซ้อนของเวลา ของ Heap Sort คือ O(nLogn)
สำหรับสิ่งนี้ อัลกอริธึมของการเรียงลำดับฮีปคืออะไร?
อัลกอริธึมการเรียงลำดับฮีป แบ่งออกเป็นสองส่วนพื้นฐาน: การสร้าง a กอง ของรายการ/อาร์เรย์ที่ไม่ได้เรียงลำดับ แล้ว จัดเรียง อาร์เรย์ถูกสร้างขึ้นโดยการลบองค์ประกอบที่ใหญ่ที่สุด / เล็กที่สุดออกจาก.ซ้ำ ๆ กอง และแทรกลงในอาร์เรย์ NS กอง ถูกสร้างขึ้นใหม่หลังจากการลบแต่ละครั้ง
ในทำนองเดียวกัน เวลาทำงานปกติของอัลกอริธึมการเรียงลำดับแบบฮีปคือเท่าใด อย่างไรก็ตาม Quicksort มีกรณีที่แย่ที่สุด เวลาทำงาน ของ O (n 2) O(n^2) O(n2) และความซับซ้อนของช่องว่างที่แย่ที่สุดของ O (log ? n O(log n O(logn) ดังนั้นถ้ามันสำคัญมากที่จะมีกรณีที่รวดเร็วที่สุด เวลาทำงาน และการใช้พื้นที่อย่างมีประสิทธิภาพ heapsort เป็นตัวเลือกที่ดีที่สุด
ในทำนองเดียวกัน มีคนถามว่า ความซับซ้อนของฟังก์ชัน Heapify คืออะไร?
แนวคิดหลักคือใน build_heap อัลกอริทึม ที่เกิดขึ้นจริง heapify ราคาไม่ใช่ O(log n) สำหรับองค์ประกอบทั้งหมดเมื่อ heapify เรียกว่า เวลาทำงานขึ้นอยู่กับว่าองค์ประกอบ faran อาจเคลื่อนลงมาใน tree ก่อนที่กระบวนการจะสิ้นสุดลง กล่าวอีกนัยหนึ่ง มันขึ้นอยู่กับความสูงขององค์ประกอบในฮีป
อัลกอริธึมการเรียงลำดับใดมีความซับซ้อนเชิงซีมโทติกที่ดีที่สุด
สำหรับ ดีที่สุด กรณีแทรก เรียงลำดับ และกอง เรียงลำดับดีที่สุด หนึ่งเดียวของพวกเขา ดีที่สุด กรณีรันไทม์ ความซับซ้อน คือ O(n) สำหรับกรณีทั่วไป asymptotic ที่ดีที่สุด เวลาทำงาน ความซับซ้อน คือ O(nlogn) ซึ่งได้รับจาก Merge เรียงลำดับ , กอง เรียงลำดับ , เร็ว เรียงลำดับ . สำหรับกรณีที่เลวร้ายที่สุด ดีที่สุด เวลาทำงาน ความซับซ้อน คือ O(nlogn) ซึ่งได้รับจาก Merge เรียงลำดับ , กอง เรียงลำดับ.