Jak pomocí cyklu setřídit čísla
Ahoj, dal by někdo tip jak pomocí cyklu seřadit pole ve kterém jsou pouze čísla?
NUM=(11 25 3 69 85 4 5 1 77 2 15)
# požadovaný výsledek
NUM=(1 2 3 4 5 11 15 25 69 77 85)
Děkuji za tip
Ahoj, dal by někdo tip jak pomocí cyklu seřadit pole ve kterém jsou pouze čísla?
NUM=(11 25 3 69 85 4 5 1 77 2 15)
# požadovaný výsledek
NUM=(1 2 3 4 5 11 15 25 69 77 85)
Děkuji za tip
Zpět do poradny Odpovědět na původní otázku Nahoru
V jakém programovacím jazyku? Musí to být cyklem, nestačí příkaz? A že by Google nevěděl...?
Musí to být cyklem, proto jsem neuváděl jazyk, vestavěnou funkcí to nestačí. Jinak se jedná o shell script.
No když jde o cyklus, je jazyk docela důležitý, každý to má jinak. Shell je pro Linux bash, nebo pro Widle? Najdi si Gůůůglem třeba Bublesort, ten je nejjedhnodušší, pak třeba Shaker sort nebo QuickSort - na tom se vyřádíš pořádně.
Žádnej shell script pro windows neexistuje. Shell je shell a bash je bash, každý je jiný. Pro windows je batch.
Hledám jen nástřel návrhu.
Víš vůbec co je to Shell?
Jasně, olej..
A PowerShell...?
Palivo od Shellky?
Buble sort metoda
Tady si vyber, jaký algoritmus chceš použít (Řadicí algoritmus) a pak už něco najdeš.
Dávám tři tipy...
Tak jsem něco sesmolil, nebylo to ani tak težké.
- prvním cyklem z pole jsem získal nejnižší a nejvyšší číslo (abych nehonil cyklus od 0 když budou čísla v rozmezí třeba 1000 -2000)
- druhým cyklem od nejnižšího jsem ověřil existenci v poli a pokud našel tak ho vložil do nového pole.
Díky za tipy.
Tak to je ovšem mimořádně neefektivní způsob.
Když někoho baví vymýšlet vymyšlené...
Treba ocenit zase, ze je to originalne riesenie a ze to len niekde neopisal;o).
Nejjednodušší metodou pro třídění je Buble sort. pro malý počet čísel je efektivní.
Jde o 2 vnorene cykly, kde prehazujes prvky v poli v pripade, kdy prvni je vetsi nez druhy.
Klidne si to zkus vymyslet.
Nejlepší je Buble sort se zkracováním. V druhé rundě nemusíme až do konce, páč je tam nejvyšší číslo už nastěhované. V další do konce -2, pak -3 atd. Až nemáme kam jet, je hotovo. Ještě může být příznak, že se to seřadilo dřív. U sálového počítače bylo řazení (nesprávně třídění) velmi často potřeba a mnoho algoritmů jsem vyrobil. Ještě větší sranda je řadit velké (tenkrát obrovské) soubory na magnetických páskách.
On i ten standardní buble sort neprojíždí vnitřním cyklem vše, ale o jednu iteraci méně než vnější cyklus.
Na učení se algoritmům je to ideální kousek kódu. Jen je třeba jej pochopit, ne tupě zkopírovat.
1. Vytvoříme pomocnou řadu (pole), ohraničenou nejmenším a největším číslem (např. 1,2,3...99,100 - index)
2. Procházíme postupně všechna čísla, která máme seřadit a přiřazujeme je do řady k číslům (takže 52 k číslu index 52 ve vytvořené řadě, atd., až čísla "dojdou")
3. Přečteme přidaná čísla na vytvořené řadě, kde budou již jen seřazená přidaná čísla. Výhoda je v tom, že nic neporovnáváme, ani nepřehazujeme.
4. Pojmenujeme to Algoritmus IQ37 (ale už to možná někdo objevil). V tom případě bod 4.) vynecháme!
no a keĎ jedno z čísel je 1578954789,58796 , tak môžme vynechať už bod 1
Každý už musí sám posoudit, jestli mu algoritmus vyhovuje nebo ne.
tak určite, ale z Algoritmus IQ37 by som som aspoň 14 ubral
Klidně ho můžeš pojmenovat po sobě.
tak na túto návnadu sa nechytím
Co si ze školy pamatuju, tak těch algoritmů bylo víc než dost a tohle se podobá algoritmu třídění výběrem (nejmenšího, největšího). Nic se nepřehazuje, ale porovnávat se pochopitelně musí.
Dneska už z toho nic nevím, vystačím si obvykle s bubblesort, nebo na to volám funkci (většinou to implementoval už někdo přede mnou a většinou když to pitvám, je to quick sort, který je taky poměrně jednoduchý a přitom daleko rychlejší).
Ale pokud by se ukázalo, že je to něco nového, tak si to klidně může člověk pojmenovat po sobě (i když spíš se dává nějaká vhodná zkratka), ale nejdřív je potřeba to publikovat v nějakém prestižním časopise, aby se svět o té novince dozvěděl.
Mimochodem co takhle otevřít učebnici (skripta) na výpočetní techniku, tam to určitě bude rozpitvané na mnoha stránkách.