정렬-병합 알고리즘

병합 정렬은 정렬 알고리즘 입니다. 하나로 정렬된 두 개의 목록을 연결하는 것으로 구성됩니다. 그 원칙은 deviser pour régner 방법을 기반으로 합니다. sort-to-merge의 장점은 두 목록이 동시에 병합되므로 threads.

이 알고리즘은 복잡성(시간 및 메모리)의 효율성과 목록 정렬로 유명합니다.
  • 데이터를 두 개의 동일한 부분으로 자릅니다.
  • 각각의 데이터를 정렬합니다. part (각 부분을 분할하면 알고리즘이 재귀 적이됩니다).
  • 두 부분을 병합합니다.
배열에 하나의 요소만 포함될 때까지 시작 배열을 두 개의 하위 배열로 재귀 적으로 통화합니다. 요소가 서로 독립적으로 정렬되면 그 시점부터 backtracking 가 시작되고 하위 테이블을 병합합니다. 정렬된 시작 보드를 얻을 때까지 하나로. 병합은 연속적인 비교로 구성됩니다.

다음 테이블을 정렬한다고 가정합니다: [ 38, 27, 43, 3, 9, 82, 10]

Java에서 Fusion 정렬

알고리즘


TriFusion 알고리즘(T, 왼쪽, 오른쪽);
    T: 값 테이블;
    왼쪽, 오른쪽 : 정수;
    center: 정수;
TOP   
    IF (왼쪽 < 오른쪽) THEN
          ← 중앙(왼쪽 + 오른쪽) / 2;
          TriFusion(T, 왼쪽, 가운데);
          TriFusion(T, 중앙 + 1, 오른쪽);
          MERGE(T, 왼쪽, 가운데, 오른쪽);
    FSI
FIN.