2010-11-22 10 views
1

누구든지이 문장을 나에게 설명 할 수 있습니까?Java 정렬 알고리즘

소트 알고리즘합니다 ( 낮은 서브리스트에서 가장 높은 소자가 높은 서브리스트에서 가장 낮은 요소보다 작은 경우 병합 생략 인) 변형 머지 소트한다.

링크 : Arrays.sort(Object[] arr)

내가 작품을 병합하는 방법을 알고 있지만, 나는 아직도 잘 이해가 안 돼요. 감사합니다.

답변

3

Mergesort는 정렬 된 하위 목록을 재귀 적으로 병합합니다. 병합에 적합한 현재의 하위 목록에 겹치는 요소가 없으면 병합 할 필요가 없습니다. 병합 작업을 건너 뜁니다.

예 :

9 최대 규모의 (A)의 요소 10 (B의 첫 번째 요소)이기 때문에이 목록을 비교하는 과정을 거쳐야 할 필요가 없습니다
List A 
1 4 8 9 

List B 
10 12 14 19 

이의 가장 큰 요소보다 큰 결과는 A와 B의 연결 일뿐입니다.

포괄적 인 처리가 필요없는 경우 바로 가기가 사용됩니다.

0

병합 정렬을 수행하고 두 개의 정렬 된 하위 목록 [1, 3, 4][2, 5, 6]을 병합하려고한다고 가정 해 봅시다. 그런 다음 병합 알고리즘을 실행하여 두 반쪽을 모두 [1, 2, 3, 4, 5, 6]에 삽입하십시오.

[1] + [2] + [3, 4] + [5, 6] = [1, 2, 3, 4, 5, 6] 

그러나 당신은 당신이 [1, 2, 3][4, 5, 6]이 두 부분을 분류 한 후에의 말을 보자. 낮은 하위 목록 (3)의 최상위 요소는 상위 하위 목록 (4)의 가장 낮은 요소보다 작습니다. 두 개의 하위 목록을 병합 할 필요가 없습니다. 당신은 단순히 그들을 함께 연결할 수 있습니다.

[1, 2, 3] + [4, 5, 6] = [1, 2, 3, 4, 5, 6]