Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में मर्ज सॉर्ट कॉल की k संख्या के साथ सरणी खोजें

मान लीजिए कि हमारे पास दो नंबर ए और बी हैं, हमें रेंज [1, ए] में मानों वाली एक सरणी ढूंढनी है और रिकर्सिव मर्ज सॉर्ट फ़ंक्शन की बिल्कुल बी संख्या की कॉल की आवश्यकता है।

इसलिए, यदि इनपुट a =10, b =15 जैसा है, तो आउटपुट [3,1,4,6,2,8,5,9,10,7]

होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक फ़ंक्शन को हल करें() परिभाषित करें। यह बाएँ, दाएँ, सरणी, b लेगा
  • यदि b <1 या बायां + 1 दाएं के समान है, तो
    • वापसी
  • b :=b - 2
  • मध्य :=(बाएं + दाएं) / 2
  • अस्थायी:=सरणी[मध्य -1]
  • सरणी[मध्य-1] :=सरणी[मध्य]
  • सरणी[मध्य] :=अस्थायी
  • हल करें (बाएं, मध्य, सरणी, बी)
  • समाधान (मध्य, दाएं, सरणी, बी)
  • मुख्य विधि से निम्न कार्य करें -
  • यदि b mod 2 0 के समान है, तो
    • "कोई नहीं" प्रदर्शित करें
    • वापसी
  • सरणी:=आकार n + 1 की एक सरणी, और 0 से भरें
  • सरणी[0] :=1
  • मैं के लिए 1 से ए की सीमा में, करते हैं
    • सरणी[i] :=i + 1
  • b :=b - 1
  • समाधान (0, ए, सरणी, बी)
  • रिटर्न ऐरे, a

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def solve(left,right,array,b):
   if (b < 1 or left + 1 == right):
      return
   b -= 2
   mid = (left + right) // 2
   temp = array[mid - 1]
   array[mid-1] = array[mid]
   array[mid] = temp
   solve(left, mid, array, b)
   solve(mid, right, array, b)
def find_arr(a,b):
   if (b % 2 == 0):
      print("None")
      return
   array = [0 for i in range(a + 2)]
   array[0] = 1
   for i in range(1, a):
      array[i] = i + 1
   b -=1
   solve(0, a, array, b)
return array, a
a = 10
b = 15
array, size = find_arr(a, b)
print(array[:size])

इनपुट

10,15

आउटपुट

[3, 1, 4, 6, 2, 8, 5, 9, 10, 7]

  1. पायथन में मर्ज सॉर्ट की व्याख्या करें

    मर्ज सॉर्ट एक सॉर्टिंग तकनीक है। यह एक कुशल छँटाई एल्गोरिथ्म है जिसकी समय जटिलता (n logn .) है ) जहां n क्रमबद्ध करने के लिए सरणी की लंबाई है। मर्ज सॉर्ट एक एल्गोरिथम है जो डिवाइड एंड कॉनक्वेर्स प्रतिमान का अनुसरण करता है। यह सरणी को लगातार दो बराबर हिस्सों में विभाजित करता है। बाद में यह प्रत्येक

  1. मर्ज सॉर्ट के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें मर्ज सॉर्ट की अवधारणा का उपयोग करके इसे सॉर्ट करने की आवश्यकता है यहां हम अधिकतम तत्व को अंत में रखते हैं। यह तब तक दोहराया जाता है जब तक कि सरणी क्रमबद्ध न हो जाए। आइए अब नीचे दिए गए कार

  1. पायथन में किसी संख्या के साथ स्ट्रिंग को सही ढंग से कैसे क्रमबद्ध करें?

    इस प्रकार का सॉर्ट जिसमें आप स्ट्रिंग के भीतर संख्याओं के आधार पर सॉर्ट करना चाहते हैं, प्राकृतिक सॉर्ट या मानव सॉर्ट कहलाते हैं। उदाहरण के लिए, यदि आपके पास टेक्स्ट है: ['Hello1','Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25'] फिर आप चाहते हैं