वर्तमान में इस प्रश्न का उत्तर देने वाला प्रत्येक उत्तर आपको बताता है कि O(1)
निरंतर समय (जो कुछ भी मापने के लिए होता है; रनटाइम हो सकता है, संचालन की संख्या, आदि)। यह सही नहीं है।
यह कहने के लिए कि रनटाइम का O(1)
मतलब है कि एक स्थिरांक c
ऐसा है कि रनटाइम c
इनपुट से स्वतंत्र होकर ऊपर से घिरा हुआ है । उदाहरण के लिए, n
पूर्णांकों की एक सरणी का पहला तत्व लौटाना है O(1)
:
int firstElement(int *a, int n) {
return a[0];
}
लेकिन यह समारोह O(1)
भी है:
int identity(int i) {
if(i == 0) {
sleep(60 * 60 * 24 * 365);
}
return i;
}
यहां रनटाइम 1 वर्ष से ऊपर है, लेकिन अधिकांश समय रनोस नैनोसेकंड के क्रम पर होता है।
यह कहने के लिए कि रनटाइम का O(n)
मतलब है कि एक स्थिरांक c
ऐसा है कि रनटाइम ऊपर से घिरा हुआ है c * n
, जहां n
इनपुट के आकार को मापता है। उदाहरण के लिए, n
निम्नलिखित एल्गोरिथ्म द्वारा पूर्णांक के एक असंक्रमित सरणी में किसी विशेष पूर्णांक की घटनाओं की संख्या का पता लगाना है O(n)
:
int count(int *a, int n, int item) {
int c = 0;
for(int i = 0; i < n; i++) {
if(a[i] == item) c++;
}
return c;
}
ऐसा इसलिए है क्योंकि हमें सरणी के माध्यम से प्रत्येक तत्व को एक बार में निरीक्षण करना होगा।