이 기사에서는 Java Exchange 정렬의 패리티 분류 구현 방법에 대해 설명합니다. 참조를 위해 공유하십시오. 세부 사항은 다음과 같습니다.
패리티 정렬 또는 패리티 전치 정렬 또는 벽돌 정렬은 원래 로컬 상호 연결과 병렬 컴퓨팅을 위해 발명 된 비교적 간단한 정렬 알고리즘입니다. 이것은 버블 분류의 특성과 유사한 비교 정렬입니다.
이 알고리즘에서, 홀수 쌍이 잘못된 순서 (첫 번째 쌍이 두 번째 것보다 큽니다)라면 배열의 인접한 (홀수) 위치 숫자 쌍을 비교하여 교환합니다. 다음 단계를 반복하지만 모든 (균일 한) 위치 숫자 쌍에 대해 반복하십시오. 이렇게 교대로 계속 가십시오.
프로세서 어레이 정렬
병렬 컴퓨팅 정렬에서 각 프로세서는 하나의 값에 해당하는 값을 처리하며 왼쪽 및 오른쪽 이웃과 로컬 상호 연결 만 있습니다. 모든 프로세서는 이웃과 동시에 운영을 동시에 비교하고 교환 할 수 있으며, 홀수, 심지어 끔찍한 순서로 번갈아갑니다. 이 알고리즘은 원래 1972 년 Habermann에 의해 출판되었으며 병렬 처리의 효율성을 보여주었습니다.
알고리즘은 각 프로세서에 여러 값이있는 경우로 효과적으로 확장 될 수 있습니다. BaudetStevenson Parity 병합 분할 알고리즘에서 각 프로세서는 각 단계에서 소유 한 서브 배열을 정렬 한 다음 이웃과 병합 된 병합 파티션 또는 전치를 수행합니다.
배치 패리티 및 분류
배치 패리티 분류는 비교 전환 및 완벽한 셔플 작업을 사용하는 관련이 있지만보다 효율적인 정렬 알고리즘입니다.
Batcher의 접근 방식은 광범위한 상호 연결을 가진 병렬 컴퓨팅 프로세서에서 매우 효율적입니다.
최악의 시간 복잡성/theta (n^2)
Parity 정렬 다이나믹 그래프는 다음과 같습니다.
코드 구현 :
com.baobaotao.test; /*** 정렬 연구* /public class sort { /** <span style = "white space : pre"> < /span>* parity sort <span style = "화이트 스페이스 : pre "> </span> * @param array <span style ="화이트 공간 : pre "> </span> */public static void batcherort (int [] array) {int longth = array.length; 부울 플래그 = while; , i+1); for (int i = 0; i <longth-1; i+= 2) {if (array [i]> 배열 [i+1]) {swap (array, i. , i+1); FLAGE (FLAG) BREAK (array)}* @Param A @Param B 숫자. 교환하려면 C */ Public STATIC VOID SWAP (int [] a, int b, int c) {int temp = 0; if (a [b ]> a [b] = a [c] = temp}; printarr (int c : array) {system.out.print (c + ""); [] 번호 = {11,95,45,78,84,51,24,12};출력 분석 :
11 45 15 95 51 78 12 84 2411 15 45 51 12 95 24 78 8411 15 12 45 24 51 78 95 8411 12 15 24 45 51 78 84 95
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.