2015-11-21 10 views
8

मैंने कई जगहों पर देखा है, बबल प्रकार के लिए जटिलता ओ (एन) है।बबल की जटिलता

लेकिन यह ऐसा कैसे हो सकता है क्योंकि आंतरिक पाश हमेशा एन-आई बार चलाना चाहिए।

for (int i = 0; i < toSort.length -1; i++) { 
      for (int j = 0; j < toSort.length - 1 - i; j++) { 
       if(toSort[j] > toSort[j+1]){ 
        int swap = toSort[j+1]; 
        toSort[j + 1] = toSort[j]; 
        toSort[j] = swap; 
       } 
      } 
     } 

उत्तर

7

और n-i का "औसत" मान क्या है? n/2

तो यह O(n*n/2) में चलाता है जो O (n)

+0

लेकिन हमारे पास ऐसा क्यों नहीं है "/ 2" –

+2

@ दीपककुमार क्योंकि इसका कोई मतलब नहीं है जब आप पैमाने से निपट रहे हैं। बड़े ओ नोटेशन पैमाने के साथ सौदा करता है। क्या आप ओ (एन) ओ (एन -1) से अलग होने पर विचार करेंगे? भले ही एन! = एन -1 उनके पास एक ही पैमाने है। वही 'n/2' और' n' पर लागू होता है। – alfasin

+0

धन्यवाद अल्फासिन। :) –

1

बाहरी पाश रन n काल से है और प्रत्येक यात्रा भीतरी पाश रन (एनआई) बार, संचालन की कुल संख्या हो सकता है के रूप में माना जाता है एन * (एनआई) = ओ (एन 2) के रूप में गणना की गई।

3

विभिन्न प्रकार की जटिलताएं हैं - आप बड़े ओ नोटेशन का उपयोग कर रहे हैं, इसका मतलब है कि इस समारोह के सभी मामले कम से कम इस समय जटिलता होंगे।

जैसा कि यह अनंतता तक पहुंचता है, यह मूल रूप से एन^2 समय जटिलता सबसे खराब स्थिति परिदृश्य हो सकता है। समय जटिलता एक सटीक कला नहीं है लेकिन एल्गोरिदम के इस वर्ग के लिए आप किस प्रकार की गति की उम्मीद कर सकते हैं और इसलिए आप बहुत सटीक होने की कोशिश कर रहे हैं।

उदाहरण के लिए सैद्धांतिक समय जटिलता बहुत अच्छी तरह से^^ 2 हो सकती है, भले ही सिद्धांत में यह होना चाहिए कि एन * एन -1 1 जो भी अप्रत्याशित प्रसंस्करण ओवरहेड किया जा सकता है।

0

यह ओ (एन^2) है, क्योंकि लंबाई * लंबाई।

संबंधित मुद्दे