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

C++ में विगल सॉर्ट - वैकल्पिक कम-ज्यादा क्रम


समस्या विवरण

मान लीजिए हमारे पास nums नामक एक असॉर्ट की गई सरणी है, हमें इसे स्थानांतरित (in-place) करना है ताकि nums[0] <= nums[1] >= nums[2] <= nums[3]... और इसी तरह हो।

उदाहरण के लिए, यदि इनपुट nums = [3,5,2,1,6,4] है, तो आउटपुट [3,5,1,6,2,4] होगा, अन्य उत्तर भी संभव हैं।

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

लालची दृष्टिकोण - एक पास में स्वैप करें:

  1. n := nums का आकार
  2. i को 0 से n-2 तक लूप करें:
    • यदि (i सम है और nums[i] > nums[i+1]) OR (i विषम है और nums[i] < nums[i+1]):
      • swap(nums[i], nums[i+1])

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

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

void print_vector(vector<auto> v){ 
    cout << "["; 
    for(int i = 0; i<v.size(); i++){ 
        cout << v[i] << ", "; 
    } 
    cout << "]"<<endl; 
} 

class Solution { 
public: 
    void wiggleSort(vector<int>& nums) { 
        int n = nums.size(); 
        for(int i = 0; i < n - 1; i+=1){ 
            if((i % 2 == 0) == ( nums[i] > nums[i + 1])){ 
                swap(nums[i], nums[i + 1]); 
            } 
        } 
    } 
}; 

int main(){ 
    vector<int> v = {3,5,2,1,6,4}; 
    Solution ob; 
    ob.wiggleSort(v); 
    print_vector(v); 
    return 0;
}

इनपुट

{3,5,2,1,6,4}

आउटपुट

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

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

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

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

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

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