이상하고 심지어 분류는보다 개인화 된 정렬입니다. 기본 아이디어는 홀수 시퀀스를 한 순서로, 심지어 시퀀스를 한 순서대로 정리 한 다음 다른 순서에서 홀수 시퀀스를 정리하고, 모든 순서가 순서대로 순서대로 시퀀스를 정리하는 것입니다.
예를 들어 봅시다.
정렬 할 배열
[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 구현 :
정적 void eldevensort (int [] ary) {// parity sort boolean flag = true; while (flag) {boolean 홀수 = false, 짝수 = false; for (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]); 홀수 = 참; }} for (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]); 짝수 = 참; }} flag = 홀수 || 심지어; // false 인 경우, 홀수 또는 심지어 시퀀스가 그러한 경우에 관계없이 조건을 충족시키는 비교가 없음을 의미합니다.}} 위의 플래그 = 홀수 || 심지어; 진실이 있으며, 여전히 교환하고 있음을 나타냅니다. 결국, 깃발은 모두 false 인 경우에만 거짓입니다.
플래그에 다시 쓰기 = 홀수 && 짝수; 허위가 있으면 전체 루프가 더 이상 완료되지 않습니다. 버블 분류와 마찬가지로 마지막 내부 루프를 줄일 수 있습니다.