ऑड-इवन सॉर्ट जिसे ब्रिक सॉर्ट के नाम से भी जाना जाता है, बबल सॉर्ट के समान एक छंटाई तकनीक है। यह छंटाई तकनीक दो चरणों में विभाजित है: ऑड चरण और इवन चरण, ये दोनों चरण हर पुनरावृत्ति में एक साथ तब तक चलते हैं जब तक सभी एलिमेंट्स क्रमबद्ध नहीं हो जाते।
इस प्रोग्रामिंग तकनीक का ऑड चरण बबल सॉर्ट की तरह काम करता है लेकिन केवल उन एलिमेंट्स पर जिनका इंडेक्स ऑड (विषम) है।
इसी तरह, इवन चरण केवल उन एलिमेंट्स पर काम करता है जिनका इंडेक्स इवन (सम) है।
इस अवधारणा को और स्पष्ट करने के लिए एक उदाहरण लेते हैं:
Input: a[]={3,5,7,6,1,4,2} Output: 1 2 3 4 5 6 7
व्याख्या
इवन-ऑड सॉर्ट जिसे ब्रिक सॉर्ट के नाम से भी जाना जाता है, एक सरल छंटाई तकनीक है जिसे समानांतर प्रसंस्करण (parallel processing) को ध्यान में रखकर डिज़ाइन किया गया था। यह अपने एलिमेंट्स को क्रमबद्ध करने के लिए तुलनाओं का उपयोग करता है। तुलना सभी ऑड/इवन युग्मों और उनके आसन्न एलिमेंट्स पर होती है। यदि कोई युग्म गलत क्रम में है तो क्रम को सही करने के लिए स्वैप किया जाता है। यह प्रक्रिया तब तक चलती है जब तक लिस्ट क्रमबद्ध नहीं हो जाती। चूंकि इसे समानांतर प्रक्रियाओं के लिए विकसित किया गया था, यह प्रति प्रोसेसर एक मान ले सकता है और दोनों प्रक्रियाएं एक्सचेंज-कंपेयर प्रकार के ऑपरेशन पर समवर्ती रूप से काम करती हैं। यह एल्गोरिदम मूल रूप से प्रस्तुत किया गया था, और ऐसे प्रोसेसर पर कुशल दिखाया गया था।
उदाहरण
#include <stdio.h>
#include <math.h>
#define MAX 7
void swap(int *,int *);
void oddeven_sort(int *);
int main() {
int a[]={3,5,7,6,1,4,2}, i;
oddeven_sort(a);
for (i = 0;i < MAX;i++) {
printf(" %d", a[i]);
}
}
void swap(int * x, int * y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}
void oddeven_sort(int * x) {
int sort = 0, i;
while (!sort) {
sort = 1;
for (i = 1;i < MAX;i += 2) {
if (x[i] > x[i+1]) {
swap(&x[i], &x[i+1]);
sort = 0;
}
}
for (i = 0;i < MAX - 1;i += 2) {
if (x[i] > x[i + 1]) {
swap(&x[i], &x[i + 1]);
sort = 0;
}
}
}
}
आउटपुट
1234567