Algoritmizace prace s SD kartou
Jindrich Fucik
fulda na seznam.cz
Pondělí Březen 30 13:42:01 CEST 2020
A=ha, po mne je chyba se dívat na A[] jako na pole, je to stream,
přichází, odchází.
Hledáme pole B[10], které obsahuje prvky nejbližší větší než je prvek B1
v uspořádaném stavu.
Pro ilustraci příklad, kdy hledám 3 prvky, větší než B1=5:
A[] obsahuje prvky v pořadí z leva doprava:
1 14 8 15 6 2 7 9 4 11
Na začátku si naplním B[3]=[-1,-1,-1] - to jako že prvek o kterém vím,
že není v seznamu.
První iterace A[]=1; B[3]=[-1,-1,-1]; B1=5;
prvek 1<5, takže zahodím
Druhá iterace A[]=14; B[3]=[-1,-1,-1]; B1=5;
prvek 14>5, takže přidám; s prvkem -1 pracuji jako s neexistujícím a
první pozice v poli je neexistující prvek, takže přidám na začátek,
všechny ostatní prvky v poli posunu o jednu doprava, poslední logicky
vypadne.
Třetí iterace A[]=8; B[3]=[14,-1,-1]; B1=5;
prvek 8>5, takže přidám. Prvek 8 je menší než první prvek (14), takže
přidám dopředu. Všechny ostatní prvky posunu.
Čtvrtá iterace A[]=15; B[3]=[8,14,-1]; B1=5;
prvek 15>5, takže přidám. Prvek 15 je menší než posldní prvek (-1),
takže přidám na konec. Všechny ostatní prvky bych posunul, ale jsem na
konci, takže jen zahodím poslední.
Pátá iterace A[]=6; B[3]=[8,14,15]; B1=5;
prvek 6>5, takže přidám. Prvek 6 je menší než první prvek (8), takže
přidám dopředu. Všechny ostatní prvky posunu.
Šestá iterace A[]=2; B[3]=[6,8,14]; B1=5;
prvek 2<5, takže zahodím
Sedmá iterace A[]=7; B[3]=[6,8,14]; B1=5;
prvek 7>5, takže přidám. Prvek 7 je menší než druhý prvek (8), takže
přidám na druhé místo. Všechny ostatní prvky posunu.
Osmá iterace A[]=9; B[3]=[6,7,8]; B1=5;
prvek 9>5, takže bych přidal, ale je větší než poslední (8), takže zahodím.
Devátá iterace A[]=4; B[3]=[6,7,8]; B1=5;
prvek 4<5, takže zahodím.
Desátá iterace A[]=11; B[3]=[6,7,8]; B1=5;
prvek 11>5, takže bych přidal, ale je větší než poslední (8), takže zahodím.
Takže mám můj nový seznam B[3]=[6,7,8] a nikde jsem si nepotřeboval ani
uložit obsah streamu A[] a a ani nic sortovat.
Chápeš?
Dne 30.3.2020 v 10:39 Pavel Kutina napsal(a):
> Tak jsem si myslel, že to, že se mi to v hlavě nerovná do nějakého
> pochopitelného algoritmu, je jen pokročilou hodinou - a mně se to tam
> nerovná ani teď, takže si fandím a bude to bude spíš demencí.
>
> Když to rozepíšu:
>
> Mám pole prvků na vstupu, dejme tomu A[], kde jsou hromady
> neuspořádaných položek. Mám pole B[] výstupu, kde potřebuju mít těch
> deset správně setříděných - s tím, že je to výřez setříděného pole
> Äsort[] , tedy při obrazení třeba čtvrté "stránky" z toho celku Asort[]
> bude platit, že pole B[] obsahuje položky Asort[30] - Asort39]".
>
> Buď jsme se úplně nepochopili, nebo to v tom řešení prostě nevidím - jak
> zjistím, který prvek je první (B[0]), tedy na pozici 30 toho setříděného
> pole (Asort[29])? Kdyby to bylo od nuly, tak jo, ale když chci najít
> třicátý, tak musím to pole stejně nějak přetřídit, abych zjistil, které
> jsou na těch pozicích před ním a které tedy mám zahodit jako podlimitní?
>
> Asi potřebuju flipchart, kafe, a programátora, kterej to umí :)
>
> Pavel Kutina
>
>
> ----- Original Message ----- From: "Jindrich Fucik" <fulda na seznam.cz>
> To: <hw-list na list.hw.cz>
> Sent: Sunday, March 29, 2020 10:38 PM
> Subject: Re: Algoritmizace prace s SD kartou
>
>
>> Ty přímo vkládáš na správné místo.
>> Tedy:
>> Je aktuální menší něž poslední minulý? Ano = zahoď + konec
>> Je aktuální větší než poslední v seznamu? Ano - je poslední v seznamu
>> větší než 9? ano = zahoď + konec, ne = dej na konec
>> Jinak najdi pozici kam patří, posuň co je za pokud při posunu přeteklo
>> 10, ta zahoď poslední.
>>
>> Dne 29.3.2020 v 21:19 Pavel Kutina napsal(a):
>>> Jakože pro každou stránku projdu ceý adresář a zahodím, co se mi
>>> nevejde do mezí, následně setřídím už jen těch deset zbylých? To zní
>>> hodně pěkně, díky, to asi bylo to správné nakopnutí, díky, tohle
>>> zkusím rozvinout.
>>>
>>> Pavel Kutina
>>>
>>>
>>>
>>> ----- Original Message ----- From: "Hynek Sladký" <econf na centrum.cz>
>>> To: <hw-list na list.hw.cz>
>>> Sent: Sunday, March 29, 2020 8:48 PM
>>> Subject: Re: Algoritmiyace prace s SD kartou
>>>
>>>
>>>> Napada me algoritmus, ktery si pamatuje jen 10 prvku pro zobrazeni a
>>>> 1 jako posledni z minule stranky.
>>>> Prochazi se vzdy cely adresar a do seznamu se pridava (tj. i vklada)
>>>> nazev, ktery je vetsi nez posledni z minule stranky a mensi nez
>>>> jeden z docasnych polozek seznamu. Po projiti celeho adresare by tam
>>>> mely byt pozadovane polozky.
>>>> Tento postup se pak muze opakovat, dokud se nedojde na konec seznamu.
>>>> Nevim, jestli se mi podarilo to popsat pochopitelne, vysvetlovani mi
>>>> nikdy neslo ;-)
>>>>
>>>> Hynek Sladky
>>>>
>>>>
>>>> Dne 29.3.2020 v 13:35 Pavel Kutina napsal(a):
>>>>> Zdravim,
>>>>>
>>>>> mam ted trochu cas na hrani, tak pro jednu svoji hracku chci
>>>>> dodelat nejaky rozumny filemanager. Hloupe je, ze je to sice na
>>>>> pomerne silnem procesoru (STM32F407VGT6 - 128kB RAM, 1MB flash),
>>>>> ale porad to neni jako na PC...
>>>>>
>>>>> Chtel bych udelat okno ve stylu poloviny Norton Commanderu, tedy
>>>>> vylistovani adresaru a souboru v danem adresari, prochazet soubory
>>>>> a dal s nimi neco delat. Hacek je, ze mne nenapada, jak vyresit
>>>>> trideni souboru - chci je mit srovnane abecedne (nebo treba podle
>>>>> data, velikosti atd.), ale zobrazuju jich v seznamu na displeji
>>>>> deset, na karte jich teoreticky muzou byt stovky, takze zobrazeni
>>>>> musim strankovat. Kdyz nactu seznam do nejakeho pole a to setridim,
>>>>> nasledne zobrazim vysek tech aktualne zobrazovanych deseti, je to
>>>>> vsechno OK - ovsem krome toho, ze sezeru vsechnu pamet, co mam, a
>>>>> jeste bych si musel nekde vypujcit :)
>>>>>
>>>>> Nenapadne nekoho, jak zmensit pametovou narocnost? Popravde mne nic
>>>>> rozumneho nenapada.
>>>>>
>>>>> Diky za kazdy rozumny tip.
>>>>>
>>>>> Pavel Kutina
>>>> _______________________________________________
>>>> HW-list mailing list - sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list