Shkruani pseudokodin për një algoritëm Merge Sort.
MergeSort(A, startIndex, endIndex):
    // Nëse ka vetëm një element në grup, kthehu
    nëse startIndex == endIdex:
        kthimi

    Indeksi i mesëm = (Indeksi i fillimit + Indeksi i fundit) / 2

    // Rendit gjysmën e majtë të grupit
    MergeSort (A, startIndex, MiddleIndex)

    // Rendit gjysmën e djathtë të grupit
    MergeSort(A, index i mesëm + 1, endIndex)

    // Bashkoni dy vargje të renditura
    Merge (A, startIndex, endIndex)

Merge(A, startIndex, endIndex):
    Indeksi i mesëm = (Indeksi i fillimit + Indeksi i fundit) / 2
    leftIndex = startIndex
    Indeksi i djathtë = Indeksi i mesëm + 1

    // Vargu i përkohshëm për të mbajtur grupin e renditur
    tempArray[]

    // Përsëriteni nëpër të dyja gjysmat e grupit
    për i në varg (startIndex, endIndex+1):
        // Nëse gjysma e majtë është duke u përsëritur, shtoni nga gjysma e djathtë
        nëse majtasIndeksi > MiddleIndex:
            tempArray[i] = A[Indeksi i djathtë]
            djathtasIndeksi++

        // Nëse gjysma e djathtë është duke u përsëritur, shtoni nga gjysma e majtë
        tjetër nëse është e drejtëIndeksi > endIdeksi:
            tempArray[i] = A[Indeksi i majtë]
            majtasIndeksi++

        // Krahasoni elementin aktual dhe shtoni elementin më të vogël
        ndryshe nëse A[leftIndex] < A[DjathtasIndex]:
            tempArray[i] = A[Indeksi i majtë]
            majtasIndeksi++
        tjetër:
            tempArray[i] = A[Indeksi i djathtë]
            djathtasIndeksi++

    // Kopjo tempArray përsëri në A
    për i në varg (startIndex, endIndex+1):
        A[i] = temparray[i]