বিজোড়-জোড় তলোয়ারটি ইট সাজানোর নামেও পরিচিত এটি একটি অনুরূপ সাজানোর কৌশল, বাবল সাজানোর মতো। এই বাছাই কৌশলটি 2টি পর্যায় বিজোড় পর্যায় এবং জোড় পর্যায়ে বিভক্ত, এই উভয় পর্যায় একই সাথে প্রতি পুনরাবৃত্তিতে সমস্ত উপাদানগুলি সাজানো না হওয়া পর্যন্ত৷
বিজোড় পর্যায় এই প্রোগ্রামিং কৌশলটি বুদ্বুদ সাজানোর মতো কাজ করে তবে শুধুমাত্র সেই উপাদানগুলির উপর যেগুলির একটি বিজোড় সূচক রয়েছে৷
একইভাবে, ইভেন ফেজ শুধুমাত্র একটি সমান সূচক আছে এমন উপাদানগুলিতে কাজ করে৷
এই ধারণাটিকে আরও স্পষ্ট করার জন্য একটি উদাহরণ দেওয়া যাক :
Input: a[]={3,5,7,6,1,4,2} Output: 1 2 3 4 5 6 7
ব্যাখ্যা
জোড়-বিজোড় বাছাইটি ইট সাজানোর নামেও পরিচিত, একটি সাধারণ বাছাই কৌশল যা সমান্তরাল প্রক্রিয়াকরণের কথা মাথায় রেখে ডিজাইন করা হয়েছিল। এটি তার উপাদান বাছাই তুলনা ব্যবহার করে. তুলনাটি তাদের বয়স এবং উপাদানগুলির সাথে সমস্ত বিজোড়/জোড় জোড়ায় সঞ্চালিত হয়। যদি কোন জোড়া ভুল ক্রমে থাকে এবং অর্ডারটি সঠিক করতে সুইচ করা হয়। তালিকা সাজানো না হওয়া পর্যন্ত এই প্রক্রিয়া চলে। যেহেতু এটি সমান্তরাল প্রক্রিয়াগুলির জন্য তৈরি করা হয়েছিল, এটি প্রতি প্রসেসরের জন্য একটি মান দুর্দান্ত করতে পারে এবং উভয় প্রক্রিয়াই বিনিময়-তুলনা টাইপ অপারেশনে একযোগে কাজ করে। এই অ্যালগরিদমটি মূলত উপস্থাপিত হয়েছিল, এবং এই ধরনের প্রসেসরগুলিতে দক্ষ হিসেবে দেখানো হয়েছে
উদাহরণ
#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