java 데이터 구조와 알고리즘의 짝짓기 정렬 알고리즘 전체 예시

본고는 자바 데이터 구조와 알고리즘의 짝짓기 정렬 알고리즘을 실례로 서술하였다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다.
알고리즘:
기본적인 사고방식은 홀수열 배열, 짝수열 배열, 다시 홀수열, 다시 짝수열, 모든 질서가 있을 때까지 배열하는 것이다
예를 들면,
대기 그룹 [62 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]
구체적인 코드:

public class Main {
  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    int[] numbers = new int[]{12,33,45,33,13,55,34,7,6};
    Main.oddEventSort(numbers);
    for(int i=0; i<numbers.length; i++){
      System.out.print(numbers[i]+" ");
    }
  }
  private static void oddEventSort(int[] numbers){
    int temp;
    for(int i=numbers.length-1; i>numbers.length/2-1; i--){
      for(int j=1; j<=i; j+=2){
        if(j==numbers.length-1)break;
        if(numbers[j]>numbers[j+1]){
          temp = numbers[j];
          numbers[j] = numbers[j+1];
          numbers[j+1] = temp;
        }
      }
      for(int j=0; j<=i; j+=2){
        if(j==numbers.length-1)break;
        if(numbers[j]>numbers[j+1]){
          temp = numbers[j];
          numbers[j] = numbers[j+1];
          numbers[j+1] = temp;
        }
      }
    }
  }
}

PS: 멀티코어 시대에는 이 알고리즘이 비교적 좋다고 한다
자바 알고리즘에 관심이 있는 더 많은 독자들은 본 사이트의 주제를 볼 수 있습니다.《 Java 데이터 구조 및 알고리즘 튜토리얼 》、《 Java 운영 DOM 노드 기술 요약 》및
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기