Penyortiran yang aneh dan bahkan adalah penyortiran yang lebih personal. Ide dasarnya adalah mengatur urutan aneh dalam satu urutan, bahkan urutan dalam satu urutan, kemudian urutan aneh di lain, dan bahkan urutan dalam satu urutan sampai semua dipesan.
Mari memberi contoh,
Array untuk disortir
[6 2 4 1 5 9]
Pertama kali membandingkan urutan yang aneh, urutan ganjil dibandingkan dengan tetangganya bahkan urutan, seperti 6 dan 2, 4 dan 1, 5 dan 9
[6 2 4 1 5 9]
Setelah pertukaran itu menjadi
[2 6 1 4 5 9]
Perbandingan kedua angka genap adalah 6 dan 1, dan 5 dan 5 adalah
[2 6 1 4 5 9]
Setelah pertukaran itu menjadi
[2 1 6 4 5 9]
Perjalanan ketiga adalah angka ganjil, dan 2, 6, dan 5 dipilih untuk dibandingkan dengan kolom tetangga mereka masing -masing.
[2 1 6 4 5 9]
Setelah pertukaran
[1 2 4 6 5 9]
Seri keempat bahkan bernomor
[1 2 4 6 5 9]
Satu pertukaran
[1 2 4 5 6 9]
Implementasi Java:
static void ganjil (int [] ary) {// parity sort boolean flag = true; while (flag) {boolean ganjil = false, bahkan = false; untuk (int i = 0; i <ary.length - 1; i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); ganjil = true; }} untuk (int i = 1; i <ary.length - 1; i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); bahkan = benar; }} flag = ganjil || bahkan; // Jika salah, itu berarti bahwa tidak peduli apakah urutan ganjil atau bahkan itu terjadi, tidak ada perbandingan yang memenuhi syarat}} Bendera di atas = ganjil || bahkan; Memiliki yang benar, menunjukkan bahwa masih bertukar. Pada akhirnya, bendera itu salah hanya jika semuanya salah.
Menulis ulang ke flag = ganjil && bahkan; Jika ada yang salah, loop keseluruhan tidak akan lagi diselesaikan. Seperti penyortiran gelembung, itu dapat mengurangi loop dalam terakhir.