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

पायथन में एक सरणी को सॉर्ट करने के लिए कितने स्वैप की आवश्यकता है यह जानने के लिए कार्यक्रम

मान लीजिए, हमारे पास nums नामक एक सरणी है और हमें किसी भी क्रम में अंकों को क्रमबद्ध करने के लिए आवश्यक स्वैप की संख्या का पता लगाना है, या तो आरोही या अवरोही।

इसलिए, यदि इनपुट अंकों की तरह है =[2, 5, 6, 3, 4], तो आउटपुट 2 होगा क्योंकि शुरू में अंकों में [2, 5, 6, 3, 4] होता है। यदि हम संख्या 6 और 4 की अदला-बदली करते हैं, तो सरणी [2,5,4,3,6] होगी। फिर, यदि हम संख्या 5 और 3 की अदला-बदली करते हैं, तो सरणी [2,3,4,5,6] होगी। तो सरणी को आरोही क्रम में क्रमबद्ध करने के लिए 2 स्वैप की आवश्यकता होती है।

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

  • एक फ़ंक्शन को परिभाषित करें swap_count() । इसमें input_arr
      लगेगा
    • pos :=input_arr में प्रत्येक आइटम के लिए tuples (item_postion, item) वाली नई सूची
    • input_arr में आइटम के अनुसार सूची स्थिति को क्रमबद्ध करें
    • सीएनटी:=0
    • 0 से लेकर input_arr के आकार के सूचकांक के लिए, करें
      • सच होने पर, करें
        • यदि pos[index, 0] इंडेक्स के समान है, तो
          • लूप से बाहर निकलें
        • अन्यथा,
          • cnt:=swap_count + 1
          • swap_index :=pos[index, 0]
          • (pos[index], pos[swap_index]) के मानों को स्वैप करें
    • वापसी सीएनटी
  • मुख्य कार्य/विधि से, निम्न कार्य करें -
    • कम से कम (swap_count(input_arr) , swap_count(input_arr रिवर्स ऑर्डर में))

उदाहरण

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

def swap_count(input_arr):
   pos = sorted(list(enumerate(input_arr)), key=lambda x: x[1])
   cnt = 0

   for index in range(len(input_arr)):
      while True:
         if (pos[index][0] == index):
            break
         else:
            cnt += 1
            swap_index = pos[index][0]
            pos[index], pos[swap_index] = pos[swap_index], pos[index]

   return cnt

def solve(input_arr):
   return min(swap_count(input_arr), swap_count(input_arr[::-1]))

nums = [2, 5, 6, 3, 4]
print(solve(nums))

इनपुट

[2, 5, 6, 3, 4]

आउटपुट

2

  1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें सरणी में सबसे बड़ा तत्व खोजने की जरूरत है। दृष्टिकोण हम अधिकतम को पहले तत्व के रूप में प्रारंभ करते हैं। इसके बाद, हम दिए गए सरणी को दूसरे तत्व से अ

  1. पायथन प्रोग्राम में इंसर्शन सॉर्ट

    इस लेख में, हम पायथन 3.x में इंसर्शन सॉर्ट के कार्यान्वयन के बारे में जानेंगे। या पहले। एल्गोरिदम प्रत्येक पुनरावृत्ति पर क्रमबद्ध सरणी को बढ़ाकर इनपुट तत्वों पर पुनरावृति करें। सॉर्ट किए गए सरणी में उपलब्ध सबसे बड़े मान के साथ वर्तमान तत्व की तुलना करें। यदि वर्तमान तत्व अधिक है, तो यह तत्

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

    इस लेख में, हम पायथन 3.x में इंसर्शन सॉर्ट के कार्यान्वयन के बारे में जानेंगे। या पहले। एल्गोरिदम 1. Iterate over the input elements by growing the sorted array at each iteration. 2. Compare the current element with the largest value available in the sorted array. 3. If the current element is greate