병합 분류는 분열 및 정복으로 분류를 의미합니다.
(1) 배열을 두 개의 작은 배열로 나누고 별도로 분류하십시오.
(2) 그런 다음 잘 정렬 된 주문의 분리 된 배열을 병합합니다.
코드 사본은 다음과 같습니다.
java.util.scanner import;
공개 클래스 mergesort {
int [] a = null;
int [] b = null;
int n;
스캐너 sin = null;
Mergesort ()
{
a = 새로운 int [10000];
b = 새로운 int [10000];
sin = 새 스캐너 (System.In);
}
void sort (int start, int end) // 정렬 [시작 ... 끝]
{
int Mid;
if (start> = end) // 요소가 하나만 있으면 직접 돌아갑니다.
반품 ;
또 다른
{
mid = (종료 시작)/2;
정렬 (시작, 시작+중간);
정렬 (시작+mid+1, end);
// 순서가 2 개의 배열을 결합합니다.
병합 (시작, 시작+중간, 끝);
}
}
무효 병합 (int start, int mid, int end) // 조합
{
int t = 시작;
int i = 시작, j = mid+1;
while (i <= mid && j <= end)
{
if (a [i] <a [j])
b [t ++] = a [i ++];
또 다른
b [t ++] = a [j ++];
}
while (i <= mid)
b [t ++] = a [i ++];
while (j <= end)
b [t ++] = a [j ++];
for (i = start; i <= end; i ++) // 정렬 된 내용을 배열의 해당 위치로 다시 작성합니다.
a [i] = b [i];
}
void run ()
{
System.out.print ( "정렬 할 숫자 수를 입력하십시오 :");
n = sin.nextint ();
for (int i = 0; i <n; i ++)
a [i] = sin.nextint ();
정렬 (0, n-1);
System.out.println ( "정렬 결과는 :");
// 정렬 할 데이터를 입력하십시오
for (int i = 0; i <n; i ++)
System.out.println (a [i]+"");
}
public static void main (String [] args) {
New Mergesort (). run ();
}
}