छँटाई एल्गोरिथ्म इस तरह है:
जबकि सूची को क्रमबद्ध नहीं किया गया है, सभी मदों का आधा हिस्सा स्नैप करें (उन्हें सूची से हटा दें)। तब तक जारी रखें जब तक कि सूची को क्रमबद्ध न किया जाए या केवल एक आइटम ही शेष रहे (जो डिफ़ॉल्ट रूप से क्रमबद्ध हो)। यह सॉर्टिंग एल्गोरिदम कार्यान्वयन के आधार पर अलग-अलग परिणाम दे सकता है।
आइटम हटाने की प्रक्रिया तय करने के लिए कार्यान्वयन तक है, लेकिन आइटम हटाने की प्रक्रिया के एक पास के बाद सूची पहले से आधी होनी चाहिए। आपका एल्गोरिथ्म या तो पहली छमाही या सूची को हटाने का निर्णय ले सकता है, सूची का अंतिम आधा, सभी विषम आइटम, सभी सामान, एक समय पर एक जब तक सूची आधी नहीं है, या कोई उल्लेख नहीं किया गया है।
इनपुट सूची में एक अनियंत्रित राशि हो सकती है (कारण के भीतर, 1000 आइटम तक कह सकते हैं), न केवल 2 ^ n आइटम की पूरी तरह से विभाज्य सूची। यदि सूची विषम है, तो हार्डकोड या रनटाइम के दौरान रैंडम तरीके से निर्णय लेने पर आपको या तो हटाना होगा (n + 1) / 2 (n-1) / 2 आइटम। अपने लिए तय करें: यदि ब्रह्मांड में जीवित चीजों की विषम मात्रा है तो थानोस क्या करेगा?
यदि कोई आइटम किसी भी पिछले आइटम से छोटा है, तो सूची को क्रमबद्ध किया जाता है। इनपुट में डुप्लिकेट हो सकता है, और आउटपुट में हो सकता है।
आपके कार्यक्रम को पूर्णांक के एक सरणी में होना चाहिए (स्टड के माध्यम से या पैरामीटर के रूप में, या तो व्यक्तिगत आइटम या एक सरणी पैरामीटर), और सॉर्ट किए गए सरणी को वापस लौटाएं (या इसे stdout में प्रिंट करें)।
उदाहरण:
// A sorted list remains sorted
[1, 2, 3, 4, 5] -> [1, 2, 3, 4, 5]
// A list with duplicates may keep duplicates in the result
[1, 2, 3, 4, 3] -> [1, 3, 3] // Removing every second item
[1, 2, 3, 4, 3] -> [3, 4, 3] -> [4, 3] -> [3] // Removing the first half
[1, 2, 3, 4, 3] -> [1, 2] // Removing the last half
[1, 2, 4, 3, 5]
अलग परिणाम दे सकता है:
// Removing every second item:
[1, 2, 4, 3, 5] -> [1, 4, 5]
या:
// Removing the first half of the list
[1, 2, 4, 3, 5] -> [3, 5] // With (n+1)/2 items removed
[1, 2, 4, 3, 5] -> [4, 3, 5] -> [3, 5] // With (n-1)/2 items removed
या:
// Removing the last half of the list
[1, 2, 4, 3, 5] -> [1, 2] // With (n+1)/2 items removed
[1, 2, 4, 3, 5] -> [1, 2, 4] // With (n-1)/2 items removed
या:
// Taking random items away until half (in this case (n-1)/2) of the items remain
[1, 2, 4, 3, 5] -> [1, 4, 3] -> [4, 3] -> [4]
[9, 1, 1, 1, 1]
। मेरा अपना एल्गोरिथ्म इस इनपुट पर विफल रहा