(यह दो सरणियों के लिए अपने विचार का सामान्यीकरण है।)
यदि आप पांच सरणी के पांच मध्यस्थों को देखकर शुरू करते हैं, तो जाहिर है कि समग्र औसत पांच सबसे छोटे और पांच मध्यस्थों में से सबसे बड़ा होना चाहिए।
सबूत इस तरह कुछ चला जाता है: यदि मध्यस्थों का न्यूनतम है, और बी मध्यस्थों का अधिकतम है, तो प्रत्येक सरणी में इसके आधे से भी कम तत्व कम से कम इसके तत्वों के आधे से भी कम हैं ख। परिणाम निम्नानुसार है।
तो इसमें से युक्त सरणी में, संख्याओं को कम से कम फेंक दें; बी युक्त सरणी में, बी से अधिक संख्याओं को फेंक दें ... लेकिन केवल दोनों सरणी से तत्वों की संख्या को फेंक दें।
यही है, यदि कोई है, तो इसकी सरणी की शुरुआत से जे तत्व हैं, और बी इसके सरणी के अंत से के तत्व हैं, तो आप पहले सर (जे, के) तत्वों को किसी सरणी से निकालते हैं और अंतिम मिनट (जे, के) बी के सरणी से तत्व।
Iterate जब तक आप कुल 1 या 2 तत्वों तक नहीं हैं।
इनमें से प्रत्येक ऑपरेशन (यानी, एक क्रमबद्ध सरणी के मध्यस्थ को ढूंढना और सरणी तत्वों को किसी सरणी के प्रारंभ या अंत से फेंकना) निरंतर समय है। तो प्रत्येक पुनरावृत्ति निरंतर समय है।
प्रत्येक पुनरावृत्ति कम से कम एक सरणी से तत्वों (आधे से अधिक) को फेंकता है, और आप केवल पांच सरणी में से प्रत्येक के लिए लॉग (एन) बार कर सकते हैं ... तो समग्र एल्गोरिदम लॉग है (एन) ।
[अपडेट]
हिमाद्री चौधरी टिप्पणी में बताते हैं, मेरे समाधान अधूरा है; चिंता करने के लिए बहुत सारे विवरण और कोने के मामले हैं। तो, चीजों को थोड़ा सा करने के लिए ...
पांच सरणी आर में से प्रत्येक के लिए, आर [एन/2-1] के रूप में अपने "निचले औसत" को परिभाषित करें और इसके "ऊपरी माध्य" को आर [एन/2 ], जहां एन सरणी में तत्वों की संख्या है (और सरणी 0 से अनुक्रमित हैं, और 2 राउंड नीचे विभाजन)।
"ए" निम्न मध्यस्थों में से सबसे छोटा हो, और "बी" ऊपरी मध्यस्थों में से सबसे बड़ा हो। यदि सबसे छोटे ऊपरी मध्यस्थ के साथ छोटे निचले मध्य और/या एकाधिक सरणी के साथ कई सरणी हैं, तो विभिन्न सरणी से ए और बी चुनें (यह उन कोने मामलों में से एक है)।
अब
, हिमाद्री के सुझाव उधार: के सभी तत्वों को ऊपर मिटा देगा और अपनी सरणी से एक सहित, और करने के लिए नीचे और उसके सरणी से ख सहित सभी तत्वों, देखभाल करने के दोनों सरणियों से तत्वों का एक ही नंबर दूर करने के लिए । ध्यान दें कि ए और बी एक ही सरणी में हो सकता है; लेकिन यदि ऐसा है, तो उनके पास समान मूल्य नहीं हो सकता है, अन्यथा हम उनमें से एक को एक अलग सरणी से चुनने में सक्षम होते। तो यह ठीक है अगर यह चरण उसी सरणी की शुरुआत और अंत से तत्वों को फेंक देता है।
जब तक आपके पास तीन या अधिक सरणी हों Iterate। लेकिन एक बार जब आप केवल एक या दो सरणी पर आ जाते हैं, तो आपको समावेशी के बजाय अनन्य होने के लिए अपनी रणनीति बदलनी होगी; आप केवल तक मिटाते हैं लेकिन ए और डाउन सहित बी सहित नहीं। इस तरह जारी रखें जब तक कि शेष एक या दो सरणी में कम से कम तीन तत्व होते हैं (गारंटी देते हैं कि आप प्रगति करते हैं)।
अंत में, आप कुछ मामलों में कम हो जाएंगे, जिनमें से सबसे कठिन दो सरणी शेष हैं, जिनमें से एक में एक या दो तत्व हैं। अब, अगर मैंने आपको पूछा: "एक क्रमबद्ध सरणी को एक या दो अतिरिक्त तत्वों को देखते हुए, सभी तत्वों के औसत को ढूंढें", मुझे लगता है कि आप इसे लगातार समय में कर सकते हैं। (फिर, हथौड़ा देने के लिए विवरणों का एक गुच्छा है, लेकिन बुनियादी विचार यह है कि एक सरणी में एक या दो तत्व जोड़ना "औसत के चारों ओर धक्का नहीं देता है।)
क्या वे प्रत्येक व्यक्तिगत रूप से क्रमबद्ध हैं, या क्या प्रत्येक सरणी भी उस श्रेणी का प्रतिनिधित्व करती है जिसमें किसी अन्य सरणी से कोई मूल्य नहीं है? यानी यदि किसी के पास श्रेणी 1-5 में मूल्य है, तो क्या दूसरे के पास समान श्रेणी में मूल्य हो सकते हैं? यदि नहीं, तो आपको केवल सरणी (निम्नतम से उच्चतम सीमा) के क्रम को निर्धारित करने की आवश्यकता है, उनकी सभी लंबाई को योग करें, मध्यम तत्व के लिए 2 से विभाजित करें और उस तत्व में उस सरणी पर जाएं। –
धन्यवाद फिलिप-एफकेयू। मैंने आपके सवालों को संबोधित किया। – codeObserver
यह एक कुख्यात समस्या है क्योंकि विचार अपेक्षाकृत आसान है लेकिन सही ढंग से लागू करना बेहद मुश्किल है। के> 2 के लिए, कार्यान्वयन खराब हो जाता है। मेरे लिए, तकनीकी साक्षात्कार के लिए यह एक अच्छा नहीं है। – galactica