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

C++ में वैकल्पिक छँटाई

एक पूर्णांक सरणी के तत्वों को इस तरह से क्रमबद्ध करना कि पहला तत्व सरणी का अधिकतम है और क्रमबद्ध सरणी का दूसरा तत्व न्यूनतम है, तीसरा दूसरा न्यूनतम है, चौथा दूसरा अधिकतम है सरणी और आगे बढ़ती है।

आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं,

Input : 4 1 8 2 9 3 7
Output : 9 1 8 2 7 3 4
Explanation : The elements in a sorted way is 1 2 3 4 7 8 9. Now, 
let’s create it in the manner we wanted it i.e. alternate sorted form. 
So, the largest element of the array first i.e. 9 followed by 1 which 
is the smallest element of the array i.e. 1 next comes 8 , 2 , 7 , 3, 4.

अब जैसा कि हमने अवधारणा को समझ लिया है, हम इस मुद्दे को हल करने के लिए एक समाधान विकसित कर सकते हैं। तो, एक संभावित समाधान सरणी को सॉर्ट करना और इस सॉर्ट किए गए सरणी के अंतिम और पहले तत्वों को प्रिंट करना होगा। आइए इस समाधान के आधार पर एक एल्गोरिथम बनाएं।

एल्गोरिदम

Step 1 : Sort the array.
Step 2 : Create two pointers one for traversing from start and other pointer for traversing from end.
Step 3 : Print values of the pointer in alternate form and increase the value of the iterator.

उदाहरण

#include <iostream>
using namespace std;
void alternateSort(int arr[], int n) ;
void swap(int *xp, int *yp) ;
void selectionSort(int arr[], int n) ;
int main(){
   int arr[] = { 4,1,8,2,9,3,7};
   int n = sizeof(arr)/sizeof(arr[0]);
   alternateSort(arr, n);
   return 0;
}
void alternateSort(int arr[], int n){
   selectionSort(arr, n);
   int i = 0, j = n-1;
   while (i < j) {
      cout << arr[j--] << " ";
      cout << arr[i++] << " ";
   }
   if (n % 2 != 0)
      cout << arr[i];
}
void swap(int *xp, int *yp){
   int temp = *xp;
   *xp = *yp;
   *yp = temp;
}
void selectionSort(int arr[], int n){
   int i, j, min_idx;
   for (i = 0; i < n-1; i++){
      min_idx = i;
   for (j = i+1; j < n; j++)
      if (arr[j] < arr[min_idx])
         min_idx = j;
      swap(&arr[min_idx], &arr[i]);
   }
}

आउटपुट

9 1 8 2 7 3 4

  1. C++ . में रेखा परावर्तन

    मान लीजिए कि हमारे पास 2D तल पर n बिंदु हैं, हमें यह जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से दर्शाती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो दी गई रेखा पर सभी बिंदुओं को प्रतिबिंबित करने के बाद मूल बिंदुओं का सेट वही होता है जो प्रतिबि

  1. C++ . में विकर्ण ट्रैवर्स II

    मान लीजिए कि हमारे पास nums नामक सूचियों की एक सूची है, हमें अंकों के सभी तत्वों को विकर्ण क्रम में दिखाना होगा। तो, अगर इनपुट पसंद है तो आउटपुट [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक सरणी रिट परिभाषित करें एक 2डी सरणी को परिभाषित

  1. सी++ में छँटाई

    इस खंड में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिथम कैसे किया जाता है। एक क्रमबद्ध सरणी एक सरणी है जिसमें प्रत्येक तत्व को किसी क्रम में क्रमबद्ध किया जाता है जैसे संख्यात्मक, वर्णानुक्रम आदि। संख्यात्मक सरणी को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे कि बबलसॉर्ट, इंसर्शन सॉर्ट, सेलेक्शन सॉर्ट, मर्ज