이 기사의 예는 Java 정렬 알고리즘 요약의 합병 및 정렬을 알려줍니다. 참조를 위해 모든 사람을 위해 공유하십시오. 특정 분석은 다음과 같습니다.
합병 알고리즘이라고도하는 Merge Operation (Merge)은 시퀀스 작업으로 정렬 된 두 시퀀스를 병합하는 것을 나타냅니다. 빠른 분류와 유사하게, Java에서 병합 된 것의 구현을 살펴 보겠습니다.
병합 정렬 (Merge)은 두 가지 (또는 그 이상) 또는 더 많은 순서 테이블을 새로운 순서로 병합하는 것입니다. 즉, 시퀀스를 여러 시퀀스로 분류하며 각 후속 시퀀스는 순서대로 정렬됩니다. 그런 다음 주문 시퀀스를 전체 순서로 결합하십시오.
병합 정렬은 합병 작업을 기반으로 한 효과적인 정렬 알고리즘입니다. 이 알고리즘은 분열 및 정복의 매우 전형적인 적용입니다. 기존 후속 시퀀스를 병합하여 완전히 질서 정연한 시퀀스를 얻습니다. 주문 된 두 테이블이 2-Roads라는 순서대로 테이블로 병합되는 경우.
정렬 알고리즘은 안정적이며, 배열은 O (n)의 추가 공간이 필요합니다 (log (n)).
작업 원칙 :
1. 두 개의 정렬 된 시퀀스의 크기를 만들기 위해 공간을 적용하십시오
2. 두 개의 포인터를 설정하고 초기 위치는 각각 두 개의 정렬 된 시퀀스의 시작 위치입니다.
3. 두 포인터로 가리키는 요소를 비교하고 합병 공간에서 비교적 작은 요소를 선택한 다음 포인터를 다음 위치로 이동하십시오.
4. 포인터가 시퀀스 종료에 도달 할 때까지 3 단계 반복
5. 남은 모든 요소를 다른 시퀀스의 합병 시퀀스의 꼬리에 직접 복사하십시오.
코드 구현 :
/////////////public void mergesort () {long [] workspace = new long [nelems]; [] int lowerbound, int thepbound) {lowbound;} else {int Mid = MID+ 1, UpperBound); Workspace, LowerBound, Mid+ 1,}} 개인 void Merge (int logtr, int highptr, int hupperbou nd) {int j = 0; int mid = highptr -1; +] = thearray [lowptr ++];} else {workspace [j ++] = thearray [highptr ++];} while (lowptr <= mid) {workspace [j ++] = thearray [lowptr ++]; } while (highptr <= upp erbound) {workspace [j ++] = thearray [highptr ++];} for (j = 0; ];}}
병합 정렬은 비교적 안정적인 정렬입니다. 입력 순서대로, 정보 정렬.
이 기사는 모든 사람의 Java 프로그램 설계에 도움이되기를 바랍니다.