Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में समय जटिलता विश्लेषण पर प्रश्नों का अभ्यास करें

समय की जटिलता किसी भी एल्गोरिथम को पूरा करने के लिए एल्गोरिथम द्वारा लिया गया समय है। एल्गोरिदम की दक्षता दिखाने और तुलनात्मक विश्लेषण के लिए यह एक महत्वपूर्ण मीट्रिक है। हम एल्गोरिदम की समय जटिलता को कम करते हैं जो इसे और अधिक प्रभावी बनाता है।

उदाहरण 1

निम्नलिखित कोड स्निपेट की समय जटिलता का पता लगाएं

for(i= 0 ; i < n; i++){
   cout<< i << " " ;
   i++;
}

लूप का अधिकतम मान n है लेकिन i लूप के लिए दो बार बढ़ा दिया जाएगा जिससे समय आधा हो जाएगा। तो समय जटिलता O(n/2) है जो O(n) के बराबर है।

उदाहरण 2

निम्नलिखित कोड स्निपेट की समय जटिलता का पता लगाएं

for(i= 0 ; i < n; i++){
   for(j = 0; j<n ;j++){
      cout<< i << " ";
   }
}

आंतरिक लूप और बाहरी लूप दोनों n बार निष्पादित कर रहे हैं। तो i के एकल मान के लिए, j n बार लूप कर रहा है, i के n मानों के लिए, j कुल n*n =n 2 बार लूप करेगा। तो समय जटिलता O(n 2 ) है।

उदाहरण 3

निम्नलिखित कोड स्निपेट की समय जटिलता का पता लगाएं

int i = n;
while(i){
   cout << i << " ";
   i = i/2;
}

इस स्थिति में, प्रत्येक पुनरावृत्ति के बाद i का मान उसके पिछले मान के आधे में बदल जाता है। तो श्रंखला इस प्रकार होगी:. तो समय जटिलता ओ (लॉग एन) है।

उदाहरण 4

निम्नलिखित कोड स्निपेट की समय जटिलता का पता लगाएं

if(i > j ){
   j>23 ? cout<<j : cout<<i;
}

कोड में दो सशर्त बयान हैं। प्रत्येक सशर्त कथन में समय जटिलता =O(1) है, उनमें से दो के लिए यह O(2) है जो O(1) के बराबर है जो स्थिर है ।

उदाहरण 5

निम्नलिखित कोड स्निपेट की समय जटिलता का पता लगाएं

for(i= 0; i < n; i++){
   for(j = 1; j < n; j = j*2){
      cout << i << " ";
   }
}

आंतरिक लूप निष्पादित कर रहा है (लॉग एन) बार जहां बाहरी एन बार निष्पादित हो रहा है। तो i के एकल मान के लिए, j (लॉग n) बार निष्पादित कर रहा है, i के n मानों के लिए, j कुल n*(log n) =(n log n) बार लूप करेगा। तो समय जटिलता ओ (एन लॉग एन) है।


  1. परिशोधित जटिलता

    परिशोधन विश्लेषण इस विश्लेषण का उपयोग तब किया जाता है जब कभी-कभी ऑपरेशन बहुत धीमा होता है, लेकिन अधिकांश ऑपरेशन जो बहुत बार निष्पादित होते हैं, वे तेज़ होते हैं। डेटा संरचनाओं में हमें हैश टेबल्स, डिसजॉइंट सेट्स आदि के लिए परिशोधित विश्लेषण की आवश्यकता होती है। हैश-टेबल में, अधिकांश समय खोज समय जट

  1. स्पर्शोन्मुख जटिलता

    एसिम्प्टोटिक विश्लेषण स्पर्शोन्मुख विश्लेषण का उपयोग करके, हम इनपुट आकार के आधार पर एल्गोरिथ्म के प्रदर्शन के बारे में एक विचार प्राप्त कर सकते हैं। हमें सटीक रनिंग टाइम की गणना नहीं करनी चाहिए, लेकिन हमें रनिंग टाइम और इनपुट साइज के बीच संबंध का पता लगाना चाहिए। इनपुट का आकार बढ़ने पर हमें रनिंग ट

  1. C/C++ में बर्कले का एल्गोरिथम

    बर्कले का एल्गोरिथ्म एक एल्गोरिथ्म है जिसका उपयोग वितरित प्रणालियों में घड़ी के सिंक्रनाइज़ेशन के लिए किया जाता है। इस एल्गोरिथम का उपयोग उन मामलों में किया जाता है जब वितरित नेटवर्क के कुछ या सभी सिस्टम में इनमें से कोई एक समस्या होती है - उ. मशीन के पास सटीक समय स्रोत नहीं है। B. नेटवर्क या