मैंने इस डेटा संरचना को खोजने में कामयाबी नहीं पाई है, लेकिन मैं इस क्षेत्र का विशेषज्ञ नहीं हूं।
संरचना एक सेट को लागू करती है, और मूल रूप से एक अपरिवर्तनीय के साथ तुलनीय तत्वों की एक सरणी है। आव्रजन निम्नलिखित है (पुनरावर्ती रूप से परिभाषित):
लंबाई 1 की एक सरणी एक मर्ज-सरणी है।
लम्बाई 2 ^ n (n> 0 के लिए) एक मर्ज-सरणी iff है:
- पहली छमाही एक मर्ज-सरणी है और दूसरी छमाही खाली है या
- पहला सरणी पूर्ण और क्रमबद्ध है, और दूसरी छमाही एक मर्ज-सरणी है।
ध्यान दें कि यदि सरणी पूर्ण है, तो इसे क्रमबद्ध किया गया है।
एक तत्व सम्मिलित करने के लिए, हमारे पास दो मामले हैं:
- यदि पहली छमाही पूरी नहीं है, तो पहले छमाही में पुनरावर्ती डालें।
- यदि पहली छमाही भरी हुई है, तो दूसरी छमाही में पुनरावर्ती डालें।
- पुनरावर्ती चरण के बाद, यदि पूरी सरणी भरी हुई है, तो हाफ़्स (जो क्रमबद्ध हैं) को मर्ज करें, और इसे अपनी मूल लंबाई के दोगुने तक आकार दें।
एक तत्व को खोजने के लिए, सरणी के पूर्ण होने पर बाइनरी खोज का उपयोग करके, दोनों हिस्सों में पुनरावृत्ति करें। (यह कुशल होना चाहिए क्योंकि ज्यादातर आरोही टुकड़े हैं)।
संरचना को विलय के स्थिर संस्करण के रूप में सोचा जा सकता है।
यह स्पष्ट नहीं है कि किसी तत्व को मिटाने के लिए क्या करना चाहिए।
संपादित करें: संरचना की मेरी समझ में सुधार के बाद।