less than 1 minute read

입력설명

  • 이미 정렬 되어 있는 두 배열을 합쳐서 정렬된 하나의 배열을 만든다.
  • 그래프의 후위 탐색 방식을 이용해서 left ~ midmid +1 ~ right 배열 원소들이 각각 정렬되어 있다고 가정하고,
  • 두 배열을 하나의 정렬 배열로 합친다.
void mergeSort(int lt, int rt)
{
    int mid;
    int p1, p2, p3;
    if (lt < rt)
    {
        mid = (lt + rt) / 2;
        mergeSort(lt, mid);
        mergeSort(mid + 1, rt);

        p1 = lt; p2 = mid + 1; p3 = lt;

        while (p1 <= mid && p2 <= rt)
        {
            if (arr[p1] < arr[p2])tmp[p3++] = arr[p1++];
            else tmp[p3++] = arr[p2++];
        }

        while (p1 <= mid) tmp[p3++] = arr[p1++];
        while (p2 <= rt) tmp[p3++] = arr[p2++];

        for (int i = lt; i <= rt; i++) arr[i] = tmp[i];

    }

}