[elektro] file sorbarendezés név szerint

Palasik Sandor palasik at mail.datanet.hu
Sun Nov 3 10:07:39 CET 2013


> Elegendő úgy is, hogy order[100]={12,1,4,8,3....} stb 100 elemű tömb adja meg az 
> eredeti konstans random lista alapjan az adott file melyik helyet foglalja el a 
> rendezett listaban.

Szerintem heapsort. Annak pont elég ez az egy tömb és nem rekurzív.

Már nem emlékszem, hogy honnan vettem ezt a verziót:

void heapsort()
{
    int i,j,left,right;

    if (linenum < 2)
        return;

    right = linenum-1;
    left = linenum/2;

    for (;;) {
        if (left > 0) {
        /* Still building heap */
            left--;
            }
        else {
        /* Removing top element from heap */
            swap(0,right);

            right--;

            if (right == 0)
        /* All elements removed from heap */
                break;
            }

        j = left;

        for (;;) {
            i = j;
            j = j*2+1;

            if (j < right &&
                    (*compare)(j,j+1) < 0)
                j++;

            if (j > right ||
                    (*compare)(i,j) >= 0)
                break;

        /* Correcting heap */
            swap(i,j);
            }
        }
}

Palasik Sándor



More information about the Elektro mailing list