2013-01-14 74 views
6

PriorityQueue की addAll विधि की जटिलता क्या है। क्या यह एक समय में एक तत्व जोड़ता है जिसके परिणामस्वरूप ओ (एन लॉग एन) होता है या क्या यह एक निर्माण ढेर प्रक्रिया का उपयोग करता है जो ओ (एन) समय में अनियंत्रित तत्वों से ढेर बनाता है?प्राथमिकता की जटिलता QAue addAll()

उत्तर

7

Javadoc सूचित करते हैं कि addAllAbstractQueue जहां यह कहते हैं की एक श्रृंखला के रूप में लागू किया है से विरासत में मिला है लगता है।

इस ओर जाता है मुझे विश्वास है कि जटिलता O(mlogn) जहां मीटर संग्रह के आकार डाला जा रहा है।

+0

...? _ ओ (एम लॉग एन) _, नहीं _ ओ (एम एन लॉग एन) _। –

+0

@ लुइस वासरमैन यूप निश्चित धन्यवाद! –

+0

मुझे लगता है कि यह 'ओ (एम लॉग (एन + एम)) होगा। मामले के बारे में सोचें जब 'n = 0' –

2

ओपनजेडीके को देखते हुए, ऐसा लगता है कि PriorityQueue को AbstractQueue से addAll कार्यान्वयन प्राप्त होता है जो संग्रह पर पुनरावृत्त करता है और कॉल प्रत्येक तत्व पर जोड़ता है।

Source

3

Priority Queue

से ... इस कार्यान्वयन enqueing और dequeing तरीकों के लिए ओ (लॉग (एन)) समय प्रदान करता है ...

तो आप केवल कर सकते हैं मान लें n log(n)

हालांकि - जाहिर है - यह केवल वही है जो आप मान सकते हैं। आपके द्वारा उपयोग किए जाने वाले विशिष्ट कार्यान्वयन के आधार पर आपको कुछ युक्तियां मिल सकती हैं जो आपके लिए मायने रखती हैं।