Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jakub
Člen
Avatar
Jakub:27.9.2018 16:31

Chtěl bych poradit. Týká se to ohledně projektu do školy má to být řazení bubble sort, vyzkoušel jsem toho hodně i nějaké tutoriály, ale prostě mi to nejde nijak, proto jsem tady jestli by jste mi neporadili nějaký program nebo řešení.
Díky za každou odpověď

Takhle zní zadání:

  1. zvolte vhodný počet řazených prvků, nejméně 15 různých hodnot, nejvíce 50 různých hodnot.
  2. pro každý zvolený počet prvků proveďte:
  3. - naplňte pole prvků náhodnými čísly
  4. - změřte dobu výpočtu
  5. tento postup (body 3 a 4) pro zvolený počet prvků opakujte nejméně 10x, maximálně 30x
  6. Pro každý zvolený počet prvků opakujte body výpočtu 3 až 5. Zvolte nejméně 10 různých počtů řazených prvků.
  7. Usoudíte-li, že doporučené rozsahy (počty) nejsou vhodné, zvolte své vlastní počty (rozsahy).
  8. Získaná data "vytiskněte" ve formě přehledné tabulky na konzoli programu (příp. okně). Zvažte, jak zvýraznit, zda došlo k ověření očekávané časové složitosti.
  9. Diskutujte případné zjištěné odchylky.

Zkusil jsem:

Chci docílit:

 
Odpovědět
27.9.2018 16:31
Avatar
Odpovídá na Jakub
Neaktivní uživatel:27.9.2018 16:37

Máš už aspoň něco? Celé to za tebe nikdo dělat nebude. A navíc bys z toho pak nic neměl.

Edit: Jak dlouho ses nad tím zamýšlel? Aspoň hodinu?

Editováno 27.9.2018 16:37
Nahoru Odpovědět
27.9.2018 16:37
Neaktivní uživatelský účet
Avatar
Jakub
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jakub:27.9.2018 16:58

No.. Mám to udělaný nějak takhle, přijde mi to ale divně. Navíc k tomu musím nějak dát timer

https://www.itnetwork.cz/…lighter/1104

 
Nahoru Odpovědět
27.9.2018 16:58
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Jakub
Neaktivní uživatel:27.9.2018 17:36

Dobře, takže:

  • <b>zvolte</b> vhodný počet, ale když už ses rozhodl to dělat takhle, co dělá na začátku to <code>new int[25]</code>
  • je celkem zbytečné zakládat proměnné hned na začátku, když je pak použiješ jen v cyklu
  • nevím, kolik lidí by ti zadalo čísla oddělovaná pomocí enteru. A stejně tam máš napsáno náhodnými
  • co třeba <code>for (/.../ j < n - i - 1; j++)</code>

Timer je třeba <code>System.Di­agnostics.Stop­watch</code> (nikdy předtím jsem na konzoli žádný nepoužíval a tohle byla otázka dvou dotazů do vyhledávače a pokaždé rozkliknutí prvního výsledku) na kterém voláš <code>Start()</co­de> a <code>Elapsed­Milliseconds</co­de>.

Nahoru Odpovědět
27.9.2018 17:36
Neaktivní uživatelský účet
Avatar
Odpovídá na Jakub
Matyáš Černohous:28.9.2018 12:25

Tak popořadě.

  1. čísla generuj automaticky a nenechávejte na uživateli ať je zadává. Protože s danou velikostí pole bys měl udělat alespoň 10 testů, takže by uživatel musel například zadávat 10x 25 hodnot pořád dokola. Stačí použít třídu Random, požití najdeš na Google.
  2. V bodu 6 se píše, že to máš opakovat pro min. 10 různých velikostí pole, takže velikost pole bych taky vždycky vygeneroval náhodně a pak jen podle velikosti pole v aktuálním kroku budeš plnit pole prvky.
  3. Myslím, že měření doby výpočtu v sekundách/setinách ti na takle malých polích na nic nebude, protože těžko z toho zjistíš to, jestli to odpovídá časově složitosti BubbleSortu, která je v průměrném i nejhorším případě kvadratická (n2). Asi bych se zaměřil na počet provedených instrukcí.

Nástřel algoritmu.

Random r = new Random() ;

//20x vygeneruješ pole různých velikostí
for i=0 to 20 i++
{
//vygeneruješ si pole o nějaké náhodne velikosti

Int num =r.Next(50)
Int[] array = new int[num] ;

//20x budeš dělat bubblesort s polem s náhodnýma číslama

for a=0 to 20 a++
{
//naplnění pole hodnotama
for c=0 to num-1 c++
{
array[c] =r.Next(500);
}
//provedeš bubblesort a měření
DoBubbleshort(array) ;
}
}
Potom co to zkusíš s 20 poli o různých velikostech vypíšeš výsledky.

PrintResults() ;
Editováno 28.9.2018 12:27
 
Nahoru Odpovědět
28.9.2018 12:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.