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

C++ में विगल सॉर्ट II


मान लीजिए हमारे पास एक अनसॉर्टेड सरणी nums है। हमें इसे पुनर्व्यवस्थित करना है ताकि nums[0] < nums[1] > nums[2] < nums[3]... पैटर्न बने।

उदाहरण: [1,5,1,1,6,4] → [1,4,1,5,1,6] (या कोई वैध विगल क्रम)।

सॉर्ट + दो-पॉइंटर प्लेसमेंट

  1. nums की कॉपी x बनाएँ और सॉर्ट करें।
  2. i = n-1 (सबसे बड़ा), j = (n-1)/2 (मध्य)।
  3. सम इंडेक्स (0, 2, 4...) पर छोटे आधे तत्व रखें: nums[l] = x[j--]।
  4. विषम इंडेक्स (1, 3, 5...) पर बड़े आधे तत्व रखें: nums[l] = x[i--]।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        vector<int> x(nums);
        sort(x.begin(), x.end());
        int n = nums.size();
        int i = n - 1;
        int j = (n - 1) / 2;
        
        for (int l = 0; l < n; l += 2) {
            nums[l] = x[j--];
        }
        for (int l = 1; l < n; l += 2) {
            nums[l] = x[i--];
        }
    }
};

int main() {
    vector<int> v = {1,5,1,1,6,4};
    Solution ob;
    ob.wiggleSort(v);
    for (int x : v) cout << x << " "; // 1 6 1 5 1 4 (वैध विगल)
    return 0;
}

इनपुट

[1,5,1,1,6,4]

आउटपुट

[1, 6, 1, 5, 1, 4, ]
  1. - C++ में 3-वे मर्ज सॉर्ट

    मर्ज सॉर्ट में सरणी को पुनरावर्ती रूप से 2 भागों में विभाजित करना, सॉर्ट करना और अंत में उन्हें मर्ज करना शामिल है। मर्ज सॉर्ट का एक प्रकार 3-वे मर्ज सॉर्ट है जहां सरणी को 2 भागों के बजाय 3 भागों में विभाजित किया जाता है।मर्ज सॉर्ट सरणियों को पुनरावर्ती तरीके से आधे आकार के सबएरे में तोड़ता है। उसी

  1. - C++ में बाइनरी इंसर्शन सॉर्ट

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

  1. - C++ में स्ट्रैंड सॉर्ट

    इस सेक्शन में हम देखेंगे कि C++ के स्टैंडर्ड लाइब्रेरी का उपयोग करके किसी ऐरे या लिंक्ड लिस्ट को कैसे सॉर्ट कर सकते हैं। C++ में विभिन्न उद्देश्यों के लिए कई अलग-अलग लाइब्रेरीज हैं। सॉर्टिंग उनमें से एक है। C++ फ़ंक्शन std::list::sort() लिस्ट के एलिमेंट्स को आरोही क्रम में सॉर्ट करता है। समान एलिमे