Cocktail Sort ทำงานตรงกันข้ามกับการเรียงลำดับแบบฟอง โดยองค์ประกอบจะถูกวนซ้ำจากซ้ายไปขวา และองค์ประกอบที่ใหญ่ที่สุดจะถูกนำไปยังตำแหน่งที่ถูกต้องก่อนและอื่นๆ ในการจัดเรียงค็อกเทล องค์ประกอบจะถูกทำซ้ำทั้งสองทิศทาง (ซ้ายและขวา) โดยสลับกัน
ต่อไปนี้เป็นโปรแกรมสำหรับประเภทค็อกเทล -
ตัวอย่าง
public class Demo{ static int temp; static void Cocktail(int a[], int n){ boolean swap = true; int begin = 0,i; int end = n - 1; while (swap) { swap = false; for (i = begin; i < end; ++i){ if (a[i] > a[i + 1]){ temp = a[i]; a[i]=a[i+1]; a[i+1]=temp; swap = true; } } if (!swap) break; swap = false; for (i = end - 1; i >= begin; --i){ if (a[i] > a[i + 1]){ temp = a[i]; a[i]=a[i+1]; a[i+1]=temp; swap = true; } } ++begin; } } public static void main(String[] args) { int my_arr[] = {34, 78, 90, 32, 67, 12, 1, 0, 95}; Cocktail(my_arr, my_arr.length); System.out.println("The sorted array is "); for (int i = 0; i < my_arr.length; i++) System.out.print(my_arr[i]+" "); System.out.println(); } }
ผลลัพธ์
The sorted array is 0 1 12 32 34 67 78 90 95
ในขั้นตอนแรก วนรอบจะรันจากซ้ายไปขวา (คล้ายกับการเรียงลำดับแบบฟอง) ในระหว่างนั้น ระบบจะเปรียบเทียบรายการที่อยู่ติดกัน ถ้าค่ามือซ้ายมากกว่าค่ามือขวา ค่าจะถูกสลับ เมื่อการวนซ้ำครั้งแรกสิ้นสุดลง จะพบองค์ประกอบที่ใหญ่ที่สุดที่ส่วนท้ายของอาร์เรย์ ในขั้นตอนถัดไป วนรอบจะทำงานจากขวาไปซ้าย โดยออกจากรายการที่เรียงลำดับล่าสุด ที่นี่อีกครั้ง มีการเปรียบเทียบองค์ประกอบที่อยู่ติดกันและเพิ่มองค์ประกอบที่มากกว่าที่ส่วนท้ายของอาร์เรย์