C++ program to sort an array of elements using merge sort

Aim:

To write a program to sort an array of elements using merge sort technique.

Algorithm:

MERGEPASS(A, N, L, B)

The N- element array A is composed of sorted subarrays where each subarray has L elements except possibly the last subarray, which may have fewer than L elements. The procedure merges the pairs of subarrays of A and assigns them to the array B.

1.     Set Q : = INT (N/(2L)), S : = 2L*Q and R : = N-S.

2.     Repeat for J=1, 2, . . . . . ,Q:

          (a)    Set LB : = 1 + (1J – 2)L. [Finds lower bound of first array.]

          (b)    Call MERGE (A, L, LB, A, L, LB + L, B, BL).

          [End of loop. ]

3.     [Only the subarray left ?]

         If R<=, then:

         Repeat for J=1, 2, . . . . , R:

         Set B (S + J) : = A(S=J).

         [End of loop]

     Else:

         Call MERGE( A, L, S + 1, A, R, L + S + 1, B, S +1).

         [End of if structure. ]

4.    Return.

MERESORT (A, N)

This algorithm sorts the N-element array A using an auxiliary  array B.

1.    Set L : = 1. [Initializes the number of elements in the subarrays.]

2.    Repeat Steps 3 to 5 while L < N :

3.    Call MERGEPASS (A, N, L, B).

4.    Call MERGEPASS (B, N, 2 * L, A).

5.    Set L : = 4 * L.

        [End of Steps 2 loop.]

6.   Exit.

Program code:

Tagged in: ,