Python týden Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Diskuze: Jak seřadit nahodná čísla

Aktivity (4)
Avatar
Zdeněk Andrle:11.12.2018 10:28

snažím se do tohoto dat formu bouble sort aby mi to vypsalo ještě na jeden řádek seřazena čísla od nejmenšího
takto to mam ted

Zkusil jsem: {
int min, max;
int[] nahodnepole = new int[6];
string n ="";
Random nahodnecislo1 = new Random();

Console.Write­Line("Vítejte v náhodném generátoru čísel");
System.Threadin­g.Thread.Sleep(2000);
Console.Write­Line("Následně vám vygeneruji 6 čísel");
System.Threadin­g.Thread.Sleep(2000);
Console.Write­Line("Stiskně­te enter pro pokračování");
Console.ReadLine();
opakovat:
for (int i = 0; i < 6; i++)
{
System.Threadin­g.Thread.Sleep(500);
nahodnepole[i] = nahodnecislo1­.Next(1, 49);
Console.Write(" "+ nahodnepole[i]);
}
Console.Write(" = ");
Console.Write(na­hodnepole[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.Write­Line();
Console.Write­Line();
Console.Write­Line("Nejvyšší > > > " + max);
Console.Write­Line("Nejmenší číslo > > > " + min);
Console.Write­Line();
System.Threadin­g.Thread.Sleep(500);

Console.Write­Line("Chcete znovu vygenerovat čísla? A/N");

n = Console.ReadLine();

Chci docílit: snažím se do tohoto dat formu bouble sort aby mi to vypsalo ještě na jeden řádek seřazena čísla od nejmenšího

 
Odpovědět 11.12.2018 10:28
Avatar
Filip Zeman
Člen
Avatar
Filip Zeman:11.12.2018 11:25

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(Tvo­jePole);. Následně pak můžeš vypsat cyklem foreach již setříděné pole. :)

 
Nahoru Odpovědět 11.12.2018 11:25
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.12.2018 14:59

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.

Editováno 11.12.2018 15:00
 
Nahoru Odpovědět 11.12.2018 14:59
Avatar
Odpovídá na Zdeněk Andrle
Matyáš Černohous:12.12.2018 19:42
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;
    }
}
 
Nahoru Odpovědět 12.12.2018 19:42
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 4 zpráv z 4.