Diskuze: Jak seřadit nahodná čísla
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zdravím. Pro příště prosím zkus využít tlačítko "Vložit zdrojový
kód", ať se v tom dá lépe vyznat.
Na třídě Array je metoda sort. Pokud přímo nevyžaduješ setřídění
Bubble sortem, který je poměrně hodně pomalý, doporučuji jednoduše
Array.Sort(TvojePole);. Následně pak můžeš vypsat cyklem foreach již
setříděné pole.
Chtelo by to rici, co to dela, co to nedela. Treba zkopirovat sem vystup.
Tez by bylo fajn pouzivat tag code </>
A uplne nejlepe, kdybys to nechal prohnat pres neco takoveho, kdyz jsi liny
formatovat sam https://codebeautify.org/csharpviewer.
Ja bych misto bubble sortu sel do insert sortu nebo lepe insert-to-middle sortu. Uz jen proto, ze pro insert sort je algoritmus jednodussi. V js napr
<script>
function insertionSort (items) {
for (var i = 0; i < items.length; i++) {
let value = items[i]
for (var j = i - 1; j > -1 && items[j] > value; j--) {
items[j + 1] = items[j]
}
items[j + 1] = value
}
return items
}
const list = [54, 26, 93, 17, 77, 31, 44, 55, 20]
console.log(insertionSort(list)) // [ 17, 20, 26, 31, 44, 54, 55, 77, 93 ]
</script>
Jestli spravne chapu ten kod (jakoze c# nepouzivam), tak nahore mas random cisla, pak mas zjisteni min, max. Pises o problemu s bubble sortem, ale zadny takovy algoritmus tam nemas.
class Program
{
static void Main(string[] args)
{
int min, max;
int[] nahodnepole = new int[6];
string n = "";
Random nahodnecislo1 = new Random();
Console.WriteLine("Vítejte v náhodném generátoru čísel");
System.Threading.Thread.Sleep(2000);
Console.WriteLine("Následně vám vygeneruji 6 čísel");
System.Threading.Thread.Sleep(2000);
Console.WriteLine("Stiskněte enter pro pokračování");
Console.ReadLine();
while (true)
{
for (int i = 0; i < 6; i++)
{
System.Threading.Thread.Sleep(500);
nahodnepole[i] = nahodnecislo1.Next(1, 49);
Console.Write(" " + nahodnepole[i]);
}
Console.Write(" = ");
Console.Write(nahodnepole[0] + nahodnepole[1] + nahodnepole[2] + nahodnepole[3] + nahodnepole[4] + nahodnepole[5]);
min = nahodnepole[0];
max = nahodnepole[0];
for (int i = 0; i <= nahodnepole.Length - 1; i++)
{
if (nahodnepole[i] < min)
{
min = nahodnepole[i];
}
}
for (int i = 0; i <= nahodnepole.Length - 1; i++)
{
if (nahodnepole[i] > max)
{
max = nahodnepole[i];
}
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Nejvyšší > > > " + max);
Console.WriteLine("Nejmenší číslo > > > " + min);
Console.WriteLine();
Console.WriteLine("Seřazená čísla bubble sortem");
Console.WriteLine(string.Join(" ", BubbleSort(nahodnepole)));
System.Threading.Thread.Sleep(500);
Console.WriteLine("Chcete znovu vygenerovat čísla? 1[ano]/0[ne]");
n = Console.ReadLine();
//přeruší while
if (n != "1")
break;
}
}
private static int[] BubbleSort(int[] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - i - 1; j++)
{
if (arr[j + 1] < arr[j])
{
int tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
return arr;
}
}
Zobrazeno 4 zpráv z 4.