[elektro] file sorbarendezés név szerint

Arnold Fuzesi arnold.fuzesi.lista at gmail.com
Sun Nov 3 10:36:16 CET 2013


Koszi a tippeket, ebbe bele kell melyednem ugy tunik...


Az a vad otletem tamadt, hogy letrehozok egy temp filet es elkezdem feltolteni ugy, h ket elem kozott mindig hagyok 100 filenevnyi helyet. (Vagy 100-n, ahol n a mar beolvasott elemek szama)
Ha adott elem kisebb / nagyobb a masiknal be tudom mindig szurni ketto koze, nem kell swappolni... uC-ben csak egy 100elemu index kell ami az adott filenev kezdocimet tarolja a file-ban, hogy ne kelljen vegigszkennelni allandoan. (Vagy lancolt lista a file-ban, es fseek-elni egyszeruen...)


Erdekes: 15 algoritmus audiovizualizalva :)

http://youtu.be/kPRA0W1kECg

Arnold
Sent from iPhone

On 2013.11.03., at 10:07, Palasik Sandor <palasik at mail.datanet.hu> wrote:

>> 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
> 
> -----------------------------------------
>          elektro[-flame|-etc]


More information about the Elektro mailing list