एल्गोरिदम के उदाहरण जिनमें ओ (1), ओ (एन लॉग एन) और ओ (लॉग एन) जटिलताएं हैं


114

कुछ एल्गोरिदम जो हम दैनिक उपयोग करते हैं जिनमें ओ (1), ओ (एन लॉग एन) और ओ (लॉग एन) जटिलताएं हैं?


6
विकी क्यों? यह न तो कोई चुनाव है और न ही व्यक्तिपरक है। वह बड़े-ओ गुणों के विशिष्ट उदाहरण चाहती है।
paxdiablo

4
विकी क्योंकि इसका कोई एकल सही उत्तर नहीं है, इसके कई उत्तर हैं।
जेसन एस

2
विकिपीडिया की एक अच्छी सूची है। en.wikipedia.org/wiki/Time_complexity
Homer6

जवाबों:


234

यदि आप प्रश्न में दिए गए समय की जटिलता के साथ एल्गोरिदम / राज्य के समूह के उदाहरण चाहते हैं, तो यहां एक छोटी सूची है -

O(1) समय

  • ऐरे इंडेक्स तक पहुँच (int a = ARR [5];)
  • लिंक्ड सूची में एक नोड सम्मिलित करना
  • स्टैक पर पुशिंग और पॉपिंग
  • कतार से सम्मिलन और निष्कासन
  • ऐरे में संग्रहीत पेड़ में एक नोड के माता-पिता या बाएं / दाएं बच्चे का पता लगाना
  • डबली लिंक्ड लिस्ट में Next / Previous एलिमेंट के लिए जंपिंग

O(n) समय

संक्षेप में, सभी Brute Force Algorithms, या Noob वाले जिन्हें रैखिकता की आवश्यकता होती है, O (n) समय जटिलता पर आधारित होते हैं

  • एक सरणी को पार करना
  • लिंक की गई सूची को ट्रेस करना
  • रैखिक खोज
  • लिंक की गई सूची में किसी विशिष्ट तत्व का विलोपन (छंटनी नहीं)
  • दो तार की तुलना
  • पलिंड्रोम के लिए जाँच
  • काउंटिंग / बकेट सॉर्ट और यहां भी आप एक लाख से अधिक ऐसे उदाहरण पा सकते हैं ...।

O(log n) समय

  • द्विआधारी खोज
  • बाइनरी सर्च ट्री में सबसे बड़ी / सबसे छोटी संख्या खोजना
  • रैखिक कार्यक्षमता के आधार पर कुछ डिवाइड और जीत एल्गोरिदम
  • फाइबोनैचि संख्याओं की गणना करना - सर्वश्रेष्ठ विधि यहां मूल आधार संपूर्ण डेटा का उपयोग नहीं कर रहा है, और प्रत्येक पुनरावृत्ति के साथ समस्या का आकार कम कर रहा है

O(n log n) समय

'लॉग एन' का कारक डिवाइड एंड कॉन्कर को ध्यान में रखकर पेश किया गया है। इनमें से कुछ एल्गोरिदम सबसे अच्छे अनुकूलित हैं और अक्सर उपयोग किए जाते हैं।

  • मर्ज़ सॉर्ट
  • ढेर बनाएं और छांटें
  • जल्दी से सुलझाएं
  • ओ (n ^ 2) एल्गोरिदम को अनुकूलित करने के आधार पर कुछ डिवाइड और जीत एल्गोरिदम

O(n^2) समय

इन लोगों को कम कुशल एल्गोरिदम माना जाता है अगर उनके O (nlogn) समकक्ष मौजूद हों। सामान्य आवेदन यहाँ पर Brute Force हो सकता है।

  • बबल शॅाट
  • सम्मिलन सॉर्ट
  • चयन छांटना
  • एक सरल 2 डी सरणी को पार करना

5
N के बारे में क्या !? मैं सोच रहा था कि क्या सामान्य एल्गोरिथ्म n का उपयोग करता है !?
Y_Y

HashMap मान के साथ-साथ LRU कार्यान्वयन जैसे अधिक जटिल एल्गोरिदम तक पहुँच प्राप्त करना, जो HashMap और दोहरी-लिंक-सूची का उपयोग करके O (1) प्राप्त करते हैं या PUSH / POP / MIN कार्यक्षमता के साथ एक स्टैक कार्यान्वित करते हैं। इसके अलावा N के तहत फाइबोनैचि का पुनरावर्ती कार्यान्वयन
ruralcoder

11
मेरा ओसीडी चाहता है कि आप O(log n)सूची से पहले सूची में स्विच करें O(n)ताकि सूची सबसे अच्छे से सबसे खराब क्रम में हो। हाहा :)
सैम ईटन

4
एक 2 डी सरणी ट्रेवर्सिंग वास्तव में हे (nxm) है जब तक कि यह एक वर्ग मैट्रिक्स नहीं है।
साइमन पेक

1
'ट्रैवलिंग सेल्समैन' समस्या n का एक उदाहरण है! (n factorial) साथ ही
Ju66ernaut

28

एक सरल उदाहरण O(1)हो सकता है return 23;- जो भी इनपुट है, यह एक निश्चित, सीमित समय में वापस आ जाएगा।

का एक विशिष्ट उदाहरण O(N log N)एक अच्छा एल्गोरिथ्म (जैसे विलय) के साथ एक इनपुट सरणी को सॉर्ट करना होगा।

एक विशिष्ट उदाहरण यदि O(log N)बाइसेक्शन द्वारा छांटे गए इनपुट ऐरे में कोई मान दिख रहा होगा।


28

O (1) - अधिकांश खाना पकाने की प्रक्रियाएं O (1) होती हैं, अर्थात, एक व्यक्ति के लिए (एक डिग्री के लिए) खाना बनाने के लिए अधिक समय होने पर भी इसमें लगातार समय लगता है, क्योंकि आप अपने बर्तन / धूपदान में जगह से बाहर भाग सकते हैं और खाना पकाने को विभाजित करने की आवश्यकता है)

O (logn) - अपनी टेलीफोन बुक में कुछ ढूंढना। बाइनरी खोज सोचो।

O (n) - एक पुस्तक पढ़ना, जहां n पृष्ठों की संख्या है। किसी पुस्तक को पढ़ने में कम से कम समय लगता है।

O (nlogn) - खिचड़ी भाषा तुरंत किसी के बारे में सोच सकती है जो कि हर रोज किया जा सकता है ... जब तक कि आप मर्ज या क्विक सॉर्ट करके कार्ड को सॉर्ट नहीं करते हैं!


2
मिनी रोस्ट की तुलना में भुट्टे को पकाने में अधिक समय लगता है :-)
पाक्सिडाब्लो

4
लेकिन आमतौर पर दो मिनी-रोस्ट बनाम एक मिनी-रोस्ट पकाने में एक ही समय लगता है, बशर्ते आपका ओवन इसे फिट करने के लिए काफी बड़ा हो!
Chii

1
बहुत विनीत! मुझे लगता है कि एक टेलीफोन या एड्रेस बुक को नामों / नंबरों की सूची से संकलित करने का काम ओ (एन लॉग एन) हो सकता है
स्क्वाशेड.बुगाबू

10

मैं आपको कुछ सामान्य एल्गोरिदम की पेशकश कर सकता हूं ...

  • O (1): एरे में एक तत्व को एक्सेस करना (अर्थात int i = [a 9])
  • O (n लॉग एन): त्वरित या मर्जोर्ट (औसतन)
  • O (लॉग एन): बाइनरी सर्च

यह आंतों की प्रतिक्रिया होगी क्योंकि यह होमवर्क / साक्षात्कार के प्रकार की तरह लगता है। यदि आप कुछ अधिक ठोस देख रहे हैं, तो यह थोड़ा कठिन है क्योंकि आम तौर पर जनता को किसी लोकप्रिय एप्लिकेशन के अंतर्निहित कार्यान्वयन (कोर्स का खुला स्रोत) का कोई पता नहीं होगा, और न ही यह अवधारणा "एप्लिकेशन" पर लागू होती है


4

O (1): शतरंज में सबसे अच्छा अगला कदम (या उस मामले के लिए जाएं)। खेल राज्यों की संख्या के रूप में यह केवल हे (1) है परिमित है :-)


5
हां, आप आमतौर पर अंतरिक्ष के लिए समय निकाल सकते हैं। मैंने वास्तव में एक टिक-टैक-टो खेल के लिए ऐसा किया है क्योंकि केवल 3 ^ 9 राज्य हैं (यदि आप रोटेशन इंटेलीजेंस को संभालते हैं तो कम है)। शतरंज, हालांकि, कुछ हद तक राज्यों की संख्या :-)
paxdiablo

1
समस्या यह है कि मैं केवल O(1)नैनोसेकंड जीवित रहूंगा , और आप निश्चित रूप से जानते हैं कि O(1)सबसे पहले क्या होगा ...
ज़ारडव

3

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


1
यह वास्तव में सच नहीं है। यदि एक एल्गोरिथ्म में O (N) समय की जटिलता है, तो इसका मतलब है कि इसका रनटाइम कुछ निरंतर k के लिए k * N चरणों से घिरा है। यह वास्तव में महत्वपूर्ण नहीं है कि क्या "कदम" सीपीयू चक्र, विधानसभा निर्देश, या (सरल) सी ऑपरेशन हैं। यह विवरण निरंतर k द्वारा छिपा हुआ है।
इगोर ऑस्ट्रोवस्की

यह उल्लेख नहीं करने के लिए कि कई व्यावहारिक मामलों में एक ओ (लॉगएन) एल्गोरिथ्म का "सी" एक सरल ओ (एन) एल्गोरिदम से भी बदतर है।
जेड

हाहा, हाँ, और एन द्वारा हम तब एक ट्यूरिंग मशीन टेप पर इनपुट की लंबाई का मतलब है - जो विभाजन के ऊर्ध्वाधर रूप को लागू करने के लिए घातीय समय लेते हैं। :-) प्रत्येक डोमेन की अपनी आवश्यकताएं हैं और अमूर्तता का अपना स्वयं का प्रचलन है।
पी शेव्ड

3

O (1) - किसी तत्व को दोगुनी लिंक की गई सूची से हटाना। जैसे

typedef struct _node {
    struct _node *next;
    struct _node *prev;
    int data;
} node;


void delete(node **head, node *to_delete)
{
    .
    .
    .
}

2

आप अपनी सूची में निम्नलिखित एल्गोरिदम जोड़ सकते हैं:

O(1)- यह निर्धारित करना कि कोई संख्या सम या विषम है; HashMap के साथ काम करना

O(logN) - कंप्यूटिंग x ^ एन,

O(N Log N) - सबसे लंबे समय तक बढ़ रही है


1

ओ (एन लॉग एन) प्रसिद्ध है कि आप कितनी तेजी से एक मनमाना सेट (एक मानक और अत्यधिक समानांतर कंप्यूटिंग मॉडल नहीं मान सकते हैं) को क्रमबद्ध कर सकते हैं।


0

0 (logn) -बिना खोज, किसी सरणी में शिखर तत्व (एक से अधिक शिखर हो सकते हैं) 0 (1) -इन अजगर एक सूची या एक स्ट्रिंग की लंबाई की गणना करता है। लेन () फ़ंक्शन 0 (1) समय लेता है। किसी सरणी में किसी तत्व तक पहुँचने में 0 (1) समय लगता है। एक स्टैक में पुश ऑपरेशन में 0 (1) समय लगता है। 0 (nlogn) -मगर सॉर्ट। अजगर में छाँटने में समय लगता है। इसलिए जब आप listname.sort () का उपयोग करते हैं तो इसमें समय लगता है।

नोट-हैश तालिका में खोज कभी-कभी टकराव के कारण निरंतर समय से अधिक समय लेती है।


0

ओ (2 एन )

O (2 N ) एक एल्गोरिथ्म को दर्शाता है जिसकी वृद्धि इनपुट डेटा सेट में प्रत्येक एडिटॉन के साथ दोगुनी हो जाती है। ओ (2 एन ) फ़ंक्शन का विकास वक्र घातीय है - बहुत उथले से शुरू होता है, फिर मौसम के अनुसार बढ़ रहा है। O (2 N ) फ़ंक्शन का एक उदाहरण फाइबोनैचि संख्याओं की पुनरावर्ती गणना है:

int Fibonacci (int number)
{
if (number <= 1) return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}

Tower of Hanoiएक बेहतर उदाहरण होता।
आशीष डुकलान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.