Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

Diskuze: Bubble sort

C# .NET .NET (C# a Visual Basic) Bubble sort American English version English version

Aktivity (3)
Avatar
Jakub
Člen
Avatar
Jakub:27. září 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. září 16:31
Avatar
Odpovídá na Jakub
Andy Scheuchzer:27. září 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. září 16:37
Nahoru Odpovědět 27. září 16:37
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Jakub
Člen
Avatar
Odpovídá na Andy Scheuchzer
Jakub:27. září 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. září 16:58
Avatar
Odpovídá na Jakub
Andy Scheuchzer:27. září 17:36

Dobře, takže:

  • zvolte vhodný počet, ale když už ses rozhodl to dělat takhle, co dělá na začátku to new int[25]
  • 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 for (/.../ j < n - i - 1; j++)

Timer je třeba System.Diagnos­tics.Stopwatch (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áš Start() a ElapsedMillise­conds.

Nahoru Odpovědět 27. září 17:36
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Odpovídá na Jakub
Matyáš Černohous:28. září 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. září 12:27
 
Nahoru Odpovědět  +2 28. září 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.