ดาบคู่คี่หรือที่เรียกว่าอิฐเป็นเทคนิคการเรียงลำดับที่คล้ายกันเช่นการเรียงลำดับฟอง เทคนิคการเรียงลำดับนี้แบ่งออกเป็น 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