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

पायथन में इंसर्शन सॉर्ट का उपयोग करके ऐरे को सॉर्ट करने के लिए आवश्यक शिफ्ट्स की संख्या ढूंढना


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

उदाहरण के लिए, यदि इनपुट है input_array = [4, 5, 3, 1, 2], तो आउटपुट होगा 8।

[4, 5, 3, 1, 2] = 0 शिफ्ट्स
[4, 5, 3, 1, 2] = 0 शिफ्ट्स
[3, 4, 5, 1, 2] = 2 शिफ्ट्स
[1, 3, 4, 5, 2] = 3 शिफ्ट्स
[1, 2, 3, 4, 5] = 3 शिफ्ट्स

कुल शिफ्ट्स = 0 + 0 + 2 + 3 + 3 = 8।

समाधान दृष्टिकोण

फेनविक ट्री (बाइनरी इंडेक्स्ड ट्री) का उपयोग करके इंवर्जन काउंट की गणना करें, जो इंसर्शन सॉर्ट शिफ्ट्स के बराबर है।

  • length = len(input_arr)।
  • आकार 1,000,001 का temp_arr (BIT) 0 से आरंभ करें।
  • ans = 0।
  • प्रत्येक item के लिए input_arr में:
    • val = item।
    • जब val > 0: ans += temp_arr[val], val -= val & -val (क्वेरी)।
    • val = item।
    • जब val <= 1,000,000: temp_arr[val] += 1, val += val & -val (अपडेट)।
  • ans = length * (length - 1) // 2 - ans (कुल जोड़े - नॉन-इनवर्जन)।
  • ans लौटाएं।

पायथन कार्यान्वयन

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. Python प्रोग्राम में ऐरे का योग खोजना Python प्रोग्राम में ऐरे का योग खोजना

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

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

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

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

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