Zdravím,
vymýšlím program, kdy bych rád zadal do jednoho pole o x prvcích (není předem dáno, kolik bude prvků) zadám časy ve vteřinách a následně do druhého pole zapíšu umístění.
cas(0) = 120
cas(1) = 121
cas(2) = 118
cas(3) = 115
cas(4) = 123
a teď by program měl nějak zjistit nejrychlejší čas a příslušný index zapsat jako první, pak druhý nejvyšší atd. jediné řešení co mně napadlo bylo takové, kdy byl předem známý počet prvků a to mi nepomůže
poradi(0) = 3
poradi(1) = 2
poradi(2) = 0
poradi(3) = 1
poradi(4) = 4
Vím jak zjistit největší, ale vůbec mi nedochází jak bych mohl zjistit další pořadí.
Záměrně nepíšu žádný programovací jazyk, protože nepotřebuji jako radu celý kód, ale bude mi stačit jakým stylem k tomuto řešení lze dojít
Díky za každý tip
Seřazení časů od nejrychlejšího
Re: Seřazení časů od nejrychlejšího
Pozri si prosím sortovacie algoritmy. Každý má nejaké výhody alebo nevýhody. Záleží od toho, čo chceš sortovať a aký objem dát.
https://cs.wikipedia.org/wiki/Kategorie:%C5%98adic%C3%AD_algoritmy
https://www.youtube.com/watch?v=ZZuD6iUe3Pc
https://cs.wikipedia.org/wiki/Kategorie:%C5%98adic%C3%AD_algoritmy
https://www.youtube.com/watch?v=ZZuD6iUe3Pc
Intel Core i7-4710HQ 3,5Ghz, Intel HM86 Chipset, 8GB DDR3 1600Mhz, SATA HDD 1TB(7200rpm) + 2TB samsung HDD,IPS LED 15,6" 1920x1080px,Intel Graphics 4600, Nvidia GeForce GTX860M 4GB GDDR5,Wi-fi 802.11 a/g/n, Bluetooth
ASUS N551JM-DM157H
Born to be FIIT (STU)
ASUS N551JM-DM157H
Born to be FIIT (STU)
Re: Seřazení časů od nejrychlejšího
Seřazení: https://cs.wikipedia.org/wiki/%C5%98azen%C3%AD
Neznámá libovolná velikost: https://cs.wikipedia.org/wiki/Line%C3%A1rn%C3%AD_seznam
Každý nově zadaný záznam se dá zatřídit ihned během jeho vkládání do seznamu, stačí ti obyčejný jednosměrný. Výpis je triviální. A dá se to udělat v jakémkoliv jazyce, který umožňuje dynamickou alokaci paměti.
Neznámá libovolná velikost: https://cs.wikipedia.org/wiki/Line%C3%A1rn%C3%AD_seznam
Každý nově zadaný záznam se dá zatřídit ihned během jeho vkládání do seznamu, stačí ti obyčejný jednosměrný. Výpis je triviální. A dá se to udělat v jakémkoliv jazyce, který umožňuje dynamickou alokaci paměti.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Seřazení časů od nejrychlejšího
Asi jsem to špatně napsal, nejde mi o seřazení v poli, čísla chci ponechat na stejných místech, ale chtěl bych, aby program zjistil že např. cas(3) = 115 je nejvyšší, tak zapíše do poradi(3) = 0 atd., kdy nevím počet prvků předem.
- Martab
- Moderátor / člen HW týmu
-
Guru Level 14
- Příspěvky: 28592
- Registrován: březen 11
- Pohlaví:
- Stav:
Offline
Re: Seřazení časů od nejrychlejšího
Tak stačí vyhledat nejvyšší čas a do druhého pole (alokované dynamicky) se zapíše na danou pozici pozice v seznamu původním.
Odesláno z mého Huawei P8 Lite pomocí Tapatalk
Odesláno z mého Huawei P8 Lite pomocí Tapatalk
i5-3350P/P8B75-M LX/Kingston DDR3 8GB/GV-N960IXOC/SS-500ET/Seagate VS35.6/Transcend SSD370-128GB/Samsung BX2250 + Dell 1909W
ThinkPad X230 - i7-3520M + Kingston Savage SSD
„Neexistuje důvod, proč by kdokoli chtěl mít doma něco jako počítač"(Ken Olsen)
Neboj se použít SZ a upozornit na své téma
Přehled desktopových socketů a CPU
ThinkPad X230 - i7-3520M + Kingston Savage SSD
„Neexistuje důvod, proč by kdokoli chtěl mít doma něco jako počítač"(Ken Olsen)
Neboj se použít SZ a upozornit na své téma
Přehled desktopových socketů a CPU
Re: Seřazení časů od nejrychlejšího
stačí na to skriptík
input= Array.new(5) {100 + rand(30) }
input.each_with_index.sort_by{|val,index| val}.map{|val,index|index}
input= Array.new(5) {100 + rand(30) }
input.each_with_index.sort_by{|val,index| val}.map{|val,index|index}
Re: Seřazení časů od nejrychlejšího
Martab píše:Tak stačí vyhledat nejvyšší čas a do druhého pole (alokované dynamicky) se zapíše na danou pozici pozice v seznamu původním.
Přesně tak, přicházející data si jednoduše uložíš do spojového seznamu, který můžeš podle potřeby při načítání neustále nafukovat (dokud ti nedojde volná paměť - hlídat!!!), a přitom současně spočítat kolik položek ten seznam má. Když je všechno načteno, tak si alokuješ příslušně velké pole pro pořadí, a potom ten seznam prohledáváš tak dlouho, dokud neznáš všechna pořadí.
Jednodušší by bylo, kdybys sice předem nevěděl kolik položek budeš potřebovat, ale měl jsi jistotu že jejich počet nepřekročí nějaké číslo. Potom bys mohl mít jenom dvě statická pole, a při načítání spočítat jak velkou část pole jsi použil. Jedna proměnná navíc, a kus nevyužité paměti.
Může ale ještě nastat případ že se ti vstupní data do paměti nevejdou, nebo můžou být neomezeně velká. To bys potom měl docela problém, a muselo by se na to jít trochu jinak...
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Seřazení časů od nejrychlejšího
kimi999 píše:jediné řešení co mně napadlo bylo takové, kdy byl předem známý počet prvků a to mi nepomůže
Pokud se nemýlím, tak další možnost (a pro Tebe asi nejlepší) je pouze v Tvém kódu nahradit onen známý počet prvků za počet prvků, který si zpočítáš z pole Jsem si celkem jistý, že v každém jazyku je funkce vracející počet prvků ze zadaného pole.
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 7
- 1527
-
od Gerete
Zobrazit poslední příspěvek
23 led 2024 21:27
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů