से बेहतर क्रमबद्ध सॉ्रे में लापता इंटेगर ढूंढें मैं पहली बार एल्गोरिदम कक्षा के विश्लेषण के माध्यम से काम कर रहा हूं, और सोच रहा था कि कोई भी नीचे दिए गए उदाहरण में सहायता कर सकता है। मेरा मानना है कि मैंने इसे ओ (एन) जटिलता के लिए हल किया है, लेकिन यह सोच रहा था कि कोई बेहतर संस्करण है कि मैं ओ (लॉगन) के बारे में नहीं सोच रहा हूं?एल्गोरिदम का विश्लेषण - ओ (एन)
Let एक = एक [1] < = ... < = एक [n + 1] n अलग पूर्णांकों का एक क्रमबद्ध सरणी, जिसमें प्रत्येक पूर्णांक रेंज [1 में है हो सकता है ... n + 1]। यही है, {1, ..., n + 1} से बिल्कुल एक पूर्णांक ए से गायब है। गायब पूर्णांक को खोजने के लिए एक efficeint एल्गोरिदम का वर्णन करें। अपने एल्गोरिदम के सबसे खराब केस जटिलता (सरणी ए तक पहुंच की संख्या) का विश्लेषण करें।
मेरे पास समाधान अपेक्षाकृत सरल है, और मेरा मानना है कि एन जटिलता का सबसे खराब मामला है। शायद मैं उदाहरण सोच रहा हूं, लेकिन क्या कोई बेहतर समाधान है?
मेरे समाधान
for(i = 1; i < n +1; i++) :
if(A[i-1] > i) :
return i
इस के पीछे तर्क है, क्योंकि यह क्रमबद्ध किया जाता है, पहला तत्व 1 होना चाहिए, दूसरा, 2 होना चाहिए, और इतने पर और बहुत आगे तक सरणी में तत्व है तत्व के मुकाबले बड़ा होना चाहिए, एक तत्व को इंगित करना याद किया गया था, तत्व को वापस कर देना चाहिए और हमारे पास गायब होना चाहिए।
क्या यह सही तर्क है? क्या इसके बारे में जाने का कोई बेहतर तरीका है?
सहायता के लिए अग्रिम में पढ़ने और धन्यवाद के लिए धन्यवाद।
हां। एक बेहतर समाधान है। संकेत: क्या आपको वास्तव में सरणी में हर तत्व को देखना है? – aquinas
क्या आप समस्या का अपना विवरण साफ कर लेंगे? (1) यदि ए अलग है, तो इसका मतलब है कि वे बराबर नहीं हैं; तो क्यों न सिर्फ "ए [1] <ए [2] <..."? (2) यदि {ए [1], ए [2], ..., ए [एन + 1]} ⊆ {1, 2, ..., एन + 1}, फिर, ∀i, ए [i] = i, और तो कोई गुम पूर्णांक नहीं है। आपका टेक्स्ट "एन विशिष्ट पूर्णांक" कहता है, इसलिए यह ए [1], ए [2], ..., ए [एन + 1] नहीं हो सकता है। (3) आपकी समस्या का बयान कहता है कि ए ए [1] से शुरू होता है, लेकिन आपका समाधान ए [0] से शुरू होता है (और, टिप्पणियों में, आप कहते हैं कि सरणी सूचकांक [0] से शुरू होते हैं)। – Scott