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

C++ में बड़ा से छोटा सॉर्ट


मान लीजिए हमारे पास पूर्णांकों की एक सूची nums है, हमें सूची को इस तरीके से सॉर्ट करना है:

  • पहला तत्व अधिकतम हो
  • दूसरा तत्व न्यूनतम हो
  • तीसरा तत्व दूसरा अधिकतम हो
  • चौथा तत्व दूसरा न्यूनतम हो

और इसी तरह।

उदाहरण के लिए, यदि इनपुट है [6, 3, 10, 4], तो आउटपुट [10, 3, 6, 4] होगा।

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

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • एक सरणी ret परिभाषित करें।
  • nums सरणी को सॉर्ट करें।
  • j := nums का आकार - 1
  • i := 0
  • while i <= j:
    • nums[j] को ret के अंत में डालें
    • j को 1 से घटाएं
    • यदि i <= j:
      • nums[i] को ret के अंत में डालें
      • i को 1 से बढ़ाएं
  • ret लौटाएं।

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:
    vector<int> solve(vector<int>& nums) {
        vector<int> ret;
        sort(nums.begin(), nums.end());
        int j = nums.size() - 1;
        int i = 0;
        while (i <= j) {
            ret.push_back(nums[j]);
            j--;
            if (i <= j) {
                ret.push_back(nums[i]);
                i++;
            }
        }
        return ret;
    }
};

int main() {
    Solution ob;
    vector<int> v = {6, 3, 10, 4};
    print_vector(ob.solve(v));
    return 0;
}

इनपुट

{6, 3, 10, 4}

आउटपुट

10, 3, 6, 4
  1. C++ में जंप गेम V C++ में जंप गेम V

    मान लीजिए हमारे पास arr नामक पूर्णांकों की एक सरणी और एक पूर्णांक d है। एक चरण में हम इंडेक्स i से कूद सकते हैं: i + x जहां: i + x < n और x की सीमा 1 से d है। = 0 और x की सीमा 1 से d है। arr[k] हो। हम सरणी के किसी भी इंडेक्स से कूदना शुरू कर सकते हैं। हमें अधिकतम इंडेक्स की संख्या ज्ञात करनी है ज

  1. - C++ में Sort Characters By Frequency

    मान लीजिए हमारे पास एक स्ट्रिंग है, हमें वर्णों को आवृत्ति (frequency) के आधार पर क्रमबद्ध करना है। इसलिए यदि स्ट्रिंग abbbacbcc जैसी है, तो आउटपुट bbbbcccaa होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -v नामक जोड़े की एक सरणी बनाएं, m नामक एक मैप बनाएं स्ट्रिंग में सभी वर्णों के लिए,m[वर्ण]

  1. - C++ में 3-वे मर्ज सॉर्ट

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