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

C++ में सॉर्टेड सरणी का वर्ग


दिए गए सॉर्टेड पूर्णांकों की सरणी में, कार्य प्रत्येक सरणी तत्व के वर्ग को प्रिंट करना और सरणी को सॉर्टेड क्रम में प्रिंट करना है। उदाहरण के लिए,

इनपुट-1 -

arr[] = {-3, -1, 0, 1, 4, 6};

आउटपुट -

{0, 1, 1, 9, 16, 36}

व्याख्या - दी गई सरणी [-3, -1, 0, 1, 4, 6] के प्रत्येक तत्व का वर्ग [0, 1, 1, 9, 16, 36] है।

इनपुट-2 -

arr[] = {0, 1, 2, 8, 9}

आउटपुट -

{0, 1, 4, 64, 81}

व्याख्या - दी गई सरणी [0, 1, 2, 8, 9] के प्रत्येक तत्व का वर्ग [0, 1, 4, 64, 81] है।

इस प्रॉब्लम को हल करने का दृष्टिकोण

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

सरणी के तत्वों पर पुनरावृति करते समय हम मान का वर्ग ज्ञात करेंगे और जांचेंगे कि राइट पूर्णांक का वर्ग लेफ्ट पूर्णांक से अधिक है या कम।

  • बढ़ते क्रम में पूर्णांकों की एक सरणी का इनपुट लें।

  • एक पूर्णांक फंक्शन squareAndSort(int *arr, int n) पूर्णांकों की एक सरणी को इनपुट के रूप में लेता है और सरणी के प्रत्येक तत्व का वर्ग सॉर्टेड तरीके से लौटाता है।

  • दो पॉइंटर्स लेफ्ट और राइट को सरणी के लेफ्ट तत्व और राइटमोस्ट तत्व के साथ इनिशियलाइज़ करें।

  • तत्व का वर्ग प्रिंट करें और इसकी तुलना राइट तत्व के वर्ग से करें।

  • लेफ्ट और राइट पॉइंटर्स को तदनुसार बढ़ाएं और घटाएं।

उदाहरण

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

vector<int> squareAndSort(vector<int>& arr) {
    int left = 0;
    int right = arr.size() - 1;
    vector<int> vec;
    while (left <= right) {
        while (left <= right) {
            int v1 = arr[left] * arr[left];
            int v2 = arr[right] * arr[right];
            if (v1 <= v2) {
                vec.push_back(v2);
                right--;
            } else {
                vec.push_back(v1);
                left++;
            }
        }
        reverse(vec.begin(), vec.end());
    }
    return vec;
}

int main() {
    vector<int> arr = {-3, -1, 0, 1, 4, 6};
    vector<int> ans = squareAndSort(arr);
    for (auto x : ans) {
        cout << x << " ";
    }
    return 0;
}

आउटपुट

उपरोक्त कोड चलाने पर निम्न आउटपुट उत्पन्न होगा,

0 1 1 9 16 36

सरणी के प्रत्येक तत्व का वर्ग है, 9, 1, 0, 1, 16, 36। इन तत्वों को सॉर्ट करने के बाद, आउटपुट 0 1 1 9 16 36 होगा।


  1. - C++ में स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि C में कोई स्ट्रिंग्स नहीं थीं। हमें कैरेक्टर सरणी का उपयोग करके स्ट्रिंग्स बनानी पड़ती थीं। इसलिए कुछ स्ट्रिंग्स की सरणी बनाने के लिए, हमें कैरेक्टर्स की 2-आयामी सरणी बनानी पड़ती थी। प्रत्येक पंक्

  1. - C++ में सॉर्टिंग

    इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज स

  1. - C++ प्रोग्राम: सॉर्टेड ऐरे कार्यान्वयन (सिलेक्शन सॉर्ट)

    सॉर्टेड ऐरे ऐरे जिसमें तत्व क्रमबद्ध क्रम में हों (संख्यात्मक, वर्णानुक्रमिक, आदि)। कई सॉर्टिंग एल्गोरिदम: बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज सॉर्ट, क्विक सॉर्ट, हीप सॉर्ट। सिलेक्शन सॉर्ट अनसॉर्टेड भाग में सबसे छोटा तत्व ढूंढकर उसे शुरुआत से स्वैप करता है। O(n²) समय जटिलता। C++ प्रोग