แปลกและแม้กระทั่งการเรียงลำดับเป็นการเรียงลำดับที่เป็นส่วนตัวมากขึ้น แนวคิดพื้นฐานคือการจัดเรียงลำดับคี่ในลำดับหนึ่งแม้กระทั่งลำดับในลำดับเดียวจากนั้นลำดับคี่ในอีกลำดับและแม้กระทั่งลำดับในลำดับเดียวจนกว่าจะได้รับคำสั่งทั้งหมด
มายกตัวอย่างกันเถอะ
อาร์เรย์ที่จะจัดเรียง
[6 2 4 1 5 9]
ครั้งแรกที่เปรียบเทียบลำดับคี่ลำดับคี่จะถูกนำมาเปรียบเทียบกับเพื่อนบ้านแม้กระทั่งลำดับเช่น 6 และ 2, 4 และ 1, 5 และ 9
[6 2 4 1 5 9]
หลังจากแลกเปลี่ยนมันจะกลายเป็น
[2 6 1 4 5 9]
การเปรียบเทียบตัวเลขคู่ที่สองคือ 6 และ 1 และ 5 และ 5 คือ
[2 6 1 4 5 9]
หลังจากแลกเปลี่ยนมันจะกลายเป็น
[2 1 6 4 5 9]
การเดินทางครั้งที่สามเป็นจำนวนคี่และ 2, 6 และ 5 ถูกเลือกเพื่อเปรียบเทียบกับคอลัมน์เพื่อนบ้านตามลำดับ
[2 1 6 4 5 9]
หลังจากการแลกเปลี่ยน
[1 2 4 6 5 9]
ซีรีส์ที่มีหมายเลขที่สี่
[1 2 4 6 5 9]
การแลกเปลี่ยนหนึ่งครั้ง
[1 2 4 5 6 9]
การใช้งาน Java:
โมฆะคงที่แปลกประหลาด (int [] ary) {// parity sort boolean flag = true; ในขณะที่ (ธง) {บูลีนคี่ = false, even = false; สำหรับ (int i = 0; i <ary.length - 1; i + = 2) {ถ้า (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); คี่ = จริง; }} สำหรับ (int i = 1; i <ary.length - 1; i + = 2) {ถ้า (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); แม้ = จริง; }} flag = คี่ || สม่ำเสมอ; // ถ้าเป็นเท็จหมายความว่าไม่ว่าลำดับที่แปลกหรือแม้กระทั่งเป็นกรณีไม่มีการเปรียบเทียบที่ตรงกับเงื่อนไข}} ธงด้านบน = คี่ || สม่ำเสมอ; มีความจริงแสดงว่ายังคงสลับ ในท้ายที่สุดธงจะเป็นเท็จก็ต่อเมื่อทั้งหมดเป็นเท็จ
เขียนใหม่เพื่อตั้งค่าสถานะ = คี่ && แม้; หากมีเท็จลูปโดยรวมจะไม่เสร็จสมบูรณ์อีกต่อไป เช่นเดียวกับการเรียงลำดับฟองมันสามารถลดการวนรอบภายในสุดท้าย