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