[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