कर रहे हैं को देखते हुए दो क्रमबद्ध सरणियों एक , ख प्रकार के टी आकार के साथ n और मीटर । मैं एक एल्गोरिथ्म की तलाश कर रहा हूं जो दो सरणियों को एक नए सरणी (अधिकतम आकार n + m) में विलय कर दे।
यदि आपके पास एक सस्ता तुलना ऑपरेशन है, तो यह बहुत आसान है। बस सबसे पहले पहले तत्व के साथ सरणी से ले लो जब तक कि एक या दोनों सरणियों को पूरी तरह से ट्रैवर्स नहीं किया जाता है, फिर शेष तत्वों को जोड़ें। कुछ इस तरह से /programming/5958169/how-to-merge-two-sorted-arrays-into-a-sorted-array
हालाँकि, स्थिति तब बदलती है जब दो तत्वों की तुलना स्रोत सरणी से लक्ष्य सरणी में कॉपी करने की तुलना में बहुत अधिक महंगी होती है । उदाहरण के लिए आपके पास बड़े मनमाने ढंग से सटीक पूर्णांक, या तार की एक सरणी हो सकती है, जहां तुलना काफी महंगी हो सकती है। बस मान लीजिए कि एरे बनाना और तत्वों की नकल करना नि: शुल्क है, और केवल एक चीज जो लागत की तुलना तत्वों से कर रही है।
इस मामले में, आप दो सरणियों को कम से कम तत्व तुलनाओं के साथ मर्ज करना चाहते हैं । यहां कुछ उदाहरण दिए गए हैं, जहां आपको सरल मर्ज एल्गोरिदम की तुलना में बहुत बेहतर करने में सक्षम होना चाहिए:
a = [1,2,3,4, ... 1000]
b = [1001,1002,1003,1004, ... 2000]
या
a = [1,2,3,4, ... 1000]
b = [0,100,200, ... 1000]
कुछ मामले हैं जहां सरल मर्ज एल्गोरिथ्म इष्टतम होगा, जैसे
a = [1,3,5,7,9,....,999]
b = [2,4,6,8,10,....,1000]
इसलिए एल्गोरिथ्म को आदर्श रूप से नीचा दिखाना चाहिए और यदि सरणियों को इंटरलेव किया जाता है, या कम से कम काफी खराब नहीं होना चाहिए, तो अधिकतम n + m-1 तुलना करें।
एक चीज़ जो बड़े आकार के अंतर वाली सूचियों के लिए बहुत अच्छी तरह से करनी चाहिए, वह होगी कि बाइनरी सर्च का उपयोग बड़े ऐरे में छोटे ऐरे के तत्वों को सम्मिलित करने के लिए। लेकिन यह कि दोनों सूची समान आकार और इंटरलेय्ड होने के मामले में इनायत नहीं होगी।
तत्वों के लिए उपलब्ध एकमात्र चीज एक (कुल) आदेश देने वाला कार्य है, इसलिए तुलनात्मक सस्ता बनाने वाली कोई भी योजना संभव नहीं है।
कोई विचार?
मैं स्काला में इस बिट के साथ आया हूं । मेरा मानना है कि यह तुलना की संख्या के बारे में इष्टतम है, लेकिन यह साबित करने की मेरी क्षमता से परे है। कम से कम यह साहित्य में मुझे मिली चीजों की तुलना में बहुत सरल है।
और मूल पोस्टिंग के बाद से, मैंने एक ब्लॉग पोस्ट लिखा कि यह कैसे काम करता है।