एक पूर्णांक सरणी के एलिमेंट्स को इस तरह क्रमबद्ध करना कि सरणी का पहला एलिमेंट सरणी का अधिकतम हो और क्रमबद्ध सरणी का दूसरा एलिमेंट न्यूनतम हो, तीसरा दूसरा न्यूनतम हो, चौथा सरणी का दूसरा अधिकतम हो और इसी तरह आगे।
आइए एक उदाहरण लेते हैं अवधारणा को बेहतर ढंग से समझने के लिए,
इनपुट: 4 1 8 2 9 3 7 आउटपुट: 9 1 8 2 7 3 4 व्याख्या: सरणी के एलिमेंट्स क्रमबद्ध तरीके से 1 2 3 4 7 8 9 हैं। अब, आइए इसे उस तरीके से बनाएं जैसा हम चाहते थे यानी वैकल्पिक क्रमबद्ध रूप। तो, सरणी का सबसे बड़ा एलिमेंट पहले यानी 9 फिर 1 जो सरणी का सबसे छोटा एलिमेंट है यानी 1 अगला आता है 8, 2, 7, 3, 4।
अब चूंकि हमने अवधारणा को समझ लिया है, हम इस मुद्दे को हल करने के लिए एक समाधान विकसित कर सकते हैं। तो, एक संभावित समाधान सरणी को क्रमबद्ध करना और इस क्रमबद्ध सरणी के अंतिम और पहले एलिमेंट्स को प्रिंट करना होगा। आइए इस समाधान के आधार पर एक एल्गोरिदम बनाते हैं।
एल्गोरिदम
चरण 1: सरणी को क्रमबद्ध करें। चरण 2: दो पॉइंटर्स बनाएं एक शुरुआत से ट्रैवर्स करने के लिए और दूसरा अंत से ट्रैवर्स करने के लिए। चरण 3: पॉइंटर्स के मानों को वैकल्पिक रूप से प्रिंट करें और इटरेटर का मान बढ़ाएं।
उदाहरण
#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