패리티 정렬 알고리즘 및 자바 그룹에서의 실현에 대한 간단한 설명

1555 단어 정렬Java
짝수 정렬은 비교적 개성적인 정렬이다. 기본적인 사고방식은 짝수 정렬 순서, 짝수 정렬 순서, 짝수 정렬 순서, 짝수 정렬 순서이다.
예를 들면,
대기열 그룹

[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]

제4회 짝수열

[1 2 4 6 5 9]

교환

[1 2 4 5 6 9]

Java 구현:

static void oddEvensort(int[] ary) { 
  //  
   
  boolean flag = true; 
  while (flag) { 
   boolean odd = false, even = 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]); 
     odd = true; 
    } 
   } 
   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]); 
     even = true; 
    } 
   } 
   flag = odd || even; // false, ,  
  } 
 } 
위의 flag =odd | even;하나는true로 교환되고 있음을 나타낸다. 그러면 마지막으로false일 때만 flag는false이다.
flag=odd&&even으로 바꾸기;하나는false이고, 더 이상 전체적인 순환이 없다.거품 정렬과 마찬가지로 마지막 내층 순환을 줄일 수 있다.

좋은 웹페이지 즐겨찾기