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

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

मान लीजिए हमें एक ऐरे दिया गया है और उस पर इंसर्शन सॉर्ट करने के लिए कहा गया है। सम्मिलन क्रम में, सरणी में प्रत्येक तत्व को सरणी में उसकी सही स्थिति में स्थानांतरित कर दिया जाता है। हमें किसी सरणी को सॉर्ट करने के लिए आवश्यक कुल पारियों की संख्या का पता लगाना है। पारियों की कुल संख्या एक पूर्णांक संख्या है और यदि सरणी पहले से ही क्रमबद्ध है, तो हम 0 पर लौटते हैं।

इसलिए, यदि इनपुट input_array =[4, 5, 3, 1, 2] जैसा है, तो आउटपुट 8

होगा।
[4, 5, 3, 1, 2] = 0 shifts

[4, 5, 3, 1, 2] = 0 shifts

[3, 4, 5, 1, 2] = 2 shifts

[1, 3, 4, 5, 2] = 3 shifts

[1, 2, 3, 4, 5] = 3 shifts

पारियों की कुल संख्या =0 + 0 + 2 + 3 + 3 =8.

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

  • लंबाई:=input_arr का आकार
  • temp_arr :=आकार 1000001 की एक नई सूची 0s के साथ आरंभ की गई
  • उत्तर:=0
  • इनपुट_एआर में प्रत्येक आइटम के लिए, करें
    • वैल:=आइटम
    • जबकि वैल> 0, करें
      • उत्तर:=उत्तर + temp_arr[val]
      • वैल:=वैल - (वैल एंड -वैल)
    • वैल:=आइटम
    • जबकि वैल <=1000000, करें
      • temp_arr[val] :=temp_arr[val] + 1
      • वैल:=वैल + (वैल एंड -वैल)
  • उत्तर:=लंबाई * (फर्श का मान (लंबाई -1) / 2) - उत्तर
  • वापसी उत्तर

उदाहरण

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

def solve(input_arr):
   length = len(input_arr)
   temp_arr = [0] * 1000001
   ans = 0
   for item in input_arr:
      val = item
      while val > 0:
         ans += temp_arr[val]
         val -= val & -val
      val = item
      while val <= 1000000:
         temp_arr[val] = temp_arr[val] + 1
         val += val & -val
   ans = length * (length - 1) // 2 - ans
   return ans

print(solve([4, 5, 3, 1, 2]))

इनपुट

[4, 5, 3, 1, 2]

आउटपुट

8

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

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

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

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

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

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