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

सी ++ में किसी अन्य सरणी का उपयोग करके तत्वों को अधिकतम करें

समस्या कथन

आकार n के साथ दो सरणियों को देखते हुए, दूसरी सरणी से तत्वों का उपयोग करके पहली सरणी को अधिकतम करें जैसे कि नए सरणी में n सबसे बड़ा लेकिन दोनों सरणियों के अद्वितीय तत्व होते हैं जो दूसरी सरणी को प्राथमिकता देते हैं यानी दूसरी सरणी के सभी तत्व पहले दिखाई देते हैं। सरणी। तत्वों की उपस्थिति का क्रम आउटपुट में इनपुट के समान ही रखा जाना चाहिए

यदि arr1[] ={12, 15, 10} और arr2[] ={16, 17, 5} तो {16, 17, 15} क्रम बनाए रखते हुए दोनों सरणी से अधिकतम तत्व हैं।

एल्गोरिदम

1. Create temporary array of size 2 * n
2. Store elements of arr1 and arr2 in temporary array and sort it in descending order
3. To keep the order of elements according to input arrays we will use hash table
4. Store first n largest unique elements of temporary array in hash table
5. Traverse the second array and store that elements of second array in temporary array that are present in hash table
6. Similarly, traverse the first array and store the elements that are present in hash table
7. In this way we get n unique and largest elements from both the arrays in temporary array

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void printArray(int *arr, int n){
   for (int i = 0; i < n; ++i) {
      cout << arr[i] << " ";
   }
   cout << endl;
}
bool compare(int a, int b){
   return a > b;
}
void getMaxElements(int *arr1, int *arr2, int n){
   int temp[2 * n];
   int k = 0;
   for (int i = 0; i < n; ++i) {
      temp[k] = arr1[i];
      ++k;
   }
   for (int i = 0; i < n; ++i) {
      temp[k] = arr2[i];
      ++k;
   }
   sort(temp, temp + 2 * n, compare);
   unordered_set<int> hash;
   int i = 0;
   while (hash.size() != n) {
      if (hash.find(temp[i]) == hash.end()) {
         hash.insert(temp[i]);
      }
      ++i;
   }
   k = 0;
   for (int i = 0; i < n; ++i) {
      if (hash.find(arr2[i]) != hash.end()) {
         temp[k++] = arr2[i];
         hash.erase(arr2[i]);
      }
   }
   for (int i = 0; i < n; ++i) {
      if (hash.find(arr1[i]) != hash.end()) {
         temp[k++] == arr1[i];
         hash.erase(arr1[i]);
      }
   }
   for (int i = 0; i < n; ++i) {
      arr1[i] = temp[i];
   }
}
int main(){
   int arr1[] = {12, 15, 10};
   int arr2[] = {16, 17, 5};
   int n = sizeof(arr1) / sizeof(arr1[0]);
   cout << "First array:\n";
   printArray(arr1, n);
   cout << "Second array:\n";
   printArray(arr2, n);
   getMaxElements(arr1, arr2, n);
   cout << "Maximum array:\n";
   printArray(arr1, n);
   return 0;
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है -

First array:
12 15 10
Second array:
16 17 5
Maximum array:
16 17 15

  1. सी ++ में एसटीएल में जोड़ी का उपयोग करके किसी अन्य सरणी के अनुसार सरणी को सॉर्ट करना

    मान लीजिए कि हमारे पास दो अलग-अलग सरणियाँ हैं। हमें सी ++ एसटीएल जोड़ी वर्ग का उपयोग करके दूसरे सरणी के आधार पर एक सरणी को सॉर्ट करना होगा। दो सरणियों पर विचार करें जैसे A1 =[2, 1, 5, 4, 9, 3, 6, 7, 10, 8], और दूसरी सरणी A2 =[A, B, C, D, E, F, G जैसी है। , एच, आई, जे], आउटपुट इस तरह होगा:ए 1 =[1, 2,

  1. सी ++ प्रोग्राम हीप सॉर्ट एल्गोरिथम का उपयोग करके 10 तत्वों की एक सरणी को सॉर्ट करने के लिए

    हीप सॉर्ट बाइनरी हीप डेटा संरचना पर आधारित है। बाइनरी हीप में पैरेंट नोड के चाइल्ड नोड्स अधिकतम हीप के मामले में उससे छोटे या उसके बराबर होते हैं, और पैरेंट नोड के चाइल्ड नोड्स मिन हीप के मामले में उससे बड़े या उसके बराबर होते हैं। हीप सॉर्ट में सभी चरणों की व्याख्या करने वाला एक उदाहरण इस प्रकार ह

  1. सी ++ प्रोग्राम पॉइंटर का उपयोग करके एक ऐरे के तत्वों तक पहुंचने के लिए

    पॉइंटर्स मेमोरी लोकेशन या वेरिएबल्स के एड्रेस को स्टोर करते हैं। दूसरे शब्दों में, पॉइंटर्स एक मेमोरी लोकेशन को रेफर करते हैं और उस मेमोरी लोकेशन पर स्टोर किए गए वैल्यू को प्राप्त करना पॉइंटर को डीरेफ्रेंसिंग के रूप में जाना जाता है। एक प्रोग्राम जो किसी सरणी के एक तत्व तक पहुँचने के लिए पॉइंटर्स क