რა არის გროვის დალაგების ალგორითმის სირთულე?
რა არის გროვის დალაგების ალგორითმის სირთულე?

ვიდეო: რა არის გროვის დალაგების ალგორითმის სირთულე?

ვიდეო: რა არის გროვის დალაგების ალგორითმის სირთულე?
ვიდეო: Build Heap Algorithm | Proof of O(N) Time Complexity 2024, აპრილი
Anonim

გროვის დალაგება არის ადგილზე ალგორითმი. დროის სირთულე : დროის სირთულე heapify არის O (Logn). დროის სირთულე of createAndBuildHeap() არის O(n) და მთლიანობაში დროის სირთულე გროვის დახარისხება არის O(nLogn).

ამასთან დაკავშირებით, როგორია გროვის დალაგების ალგორითმი?

გროვის დახარისხების ალგორითმი იყოფა ორ ძირითად ნაწილად: შექმნა ა გროვა დაუხარისხებელი სიის / მასივის. შემდეგ ა დალაგებულია მასივი იქმნება უმსხვილესი/პატარა ელემენტის განმეორებით ამოღებით გროვა , და ჩასმა მასივში. The გროვა რეკონსტრუქცია ხდება ყოველი მოხსნის შემდეგ.

ანალოგიურად, როგორია გროვის დალაგების ალგორითმის ტიპიური გაშვების დრო? თუმცა, QuickSort-ს აქვს უარესი შემთხვევა გაშვების დრო O (n 2) O(n^2) O(n2) და ყველაზე უარესი სივრცის სირთულე O (log ? n O(log n O(logn), ასე რომ, თუ ძალიან მნიშვნელოვანია, რომ გვქონდეს ყველაზე უარესი შემთხვევა გაშვების დრო და სივრცის ეფექტური გამოყენება, ჰეპსორტი საუკეთესო ვარიანტია.

ანალოგიურად, ისმის კითხვა, რა არის Heapify ფუნქციის სირთულე?

მთავარი იდეა ისაა, რომ build_heap-ში ალგორითმი ფაქტობრივი ადიდებენ ღირებულება არ არის O(log n) ყველა ელემენტისთვის.როდესაც ადიდებენ ეწოდება, გაშვების დრო დამოკიდებულია იმაზე, თუ რამდენად ფარანის ელემენტი შეიძლება გადავიდეს ხეზე პროცესის დასრულებამდე. სხვა სიტყვებით რომ ვთქვათ, ეს დამოკიდებულია ელემენტის სიმაღლეზე გროვაში.

დახარისხების რომელ ალგორითმს აქვს საუკეთესო ასიმპტომური სირთულე?

ამისთვის საუკეთესო ქეისის ჩასმა დალაგება და ჰეპი დალაგება საუკეთესოა ერთი, როგორც მათი საუკეთესო საქმის გაშვების დრო სირთულის არის O(n). საშუალო შემთხვევისთვის საუკეთესო ასიმპტომური გაშვების დრო სირთულის არის O(nlogn), რომელიც მოცემულია Merge-ით დალაგება , გროვა დალაგება , სწრაფი დალაგება . უარეს შემთხვევაში საუკეთესო გაშვების დრო სირთულის არის O(nlogn), რომელიც მოცემულია Merge-ით დალაგება , გროვა დალაგება.

გირჩევთ: