Domanda

ho scritto l'intera cosa, ma ottengo gli errori vaghi. Non so che cosa c'è che non va .... ugh.Also, si può chiedere il motivo per cui non ricorsiva bene il mio insegnante ha in questo modo per il test.

void nonrec_mergesort(vector <int> & a, vector <int> & b, int s, int r)
{

    int m = 1;
    while (m <= r)
    {
        int i = 0;
        while(s < (r-m))
        {
            stl_merge(a, b, i, ((i+i+m-1)/2), (i+m-1));
            stl_merge(a, b, i+m, (min(i+2*m-1,r-1)+(i+m))/2, min(i+2*m-1,r-1));
            s = s + (2*m);
        }
        m = m * 2;
    }
}
È stato utile?

Soluzione

Questo collegamento deve rispondere alle vostre quetsions circa basso verso l'alto merge sort, ma non hanno fornito abbastanza informazioni per facilmente assistervi.

http://www.algorithmist.com/index.php/Merge_sort

Input: array a[] indexed from 0 to n-1.

    m = 1
    while m <= n do
        i = 0
        while i < n-m do
            merge subarrays a[i..i+m-1] and a[i+m .. min(i+2*m-1,n-1)] in-place.
            i = i + 2 * m
        m = m * 2
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top