NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
jenda
Člen
Avatar
jenda:17.8.2013 9:55

Mám 100 prvků pole, kde každý prvek se skládá ze dvou hodnot. Je možné toto pole setřídit podle první z hodnot? Tedy mám 100 párů nějakých [a,b] a šlo by to setřídit podle a? Šlo by to pomocí Array.Sort ?
Díky moc

 
Odpovědět
17.8.2013 9:55
Avatar
Odpovídá na jenda
Michael Olšavský:17.8.2013 10:08

Přes LINQ a nebo si na to udělej vlastní algoritmus. Není to nic složitého. Tedy podle toho který.

Editováno 17.8.2013 10:09
 
Nahoru Odpovědět
17.8.2013 10:08
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na jenda
David Hartinger:17.8.2013 10:10

Doufám, že v tom poli máš objekty a ne další pole. Samozřejmě to jde a dokonce i velmi jednoduše:

pole.OrderBy(p => p.Vlastnost);
Nahoru Odpovědět
17.8.2013 10:10
New kid back on the block with a R.I.P
Avatar
jenda
Člen
Avatar
Odpovídá na David Hartinger
jenda:17.8.2013 10:55

tak v poli mám prvky - hodnoty

To OrderBy si musím udělat?

 
Nahoru Odpovědět
17.8.2013 10:55
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na jenda
David Hartinger:17.8.2013 10:58

Píšeš, že máš v poli vždy 2 hodnoty. Proto se ptám jak to máš udělané. OrderBy si udělat samozřejmě nemusíš, je to součást LINQu, jak jsem psal výše.

Nahoru Odpovědět
17.8.2013 10:58
New kid back on the block with a R.I.P
Avatar
jenda
Člen
Avatar
Odpovídá na David Hartinger
jenda:17.8.2013 15:54

Uf, s LINQ se setkávám poprvé :-) Můžeš mi prosím postup více přiblížit?
V životě jsem s tím nedělal, takže vůbec netuším o co jde ...

 
Nahoru Odpovědět
17.8.2013 15:54
Avatar
Odpovídá na jenda
Neaktivní uživatel:17.8.2013 17:54

Pro úvod do LINQu se můžeš juknout třeba na místní tutorial o kolekcích, abys měl představu, jak se používá (8.-10. kapitola):
http://www.itnetwork.cz/…lekce-a-linq

Nahoru Odpovědět
17.8.2013 17:54
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:17.8.2013 17:55

Buď tu máš nato seriál => http://www.itnetwork.cz/…-linq-dotazy

A kdybys nepochopil tak tu máš jak by to třeba mohlo vypadat:

class A
    {
        public int Num1 { get; set; }
        public int Num2 { get; set; }

        public override string ToString()
        {
            return Num1 + " " + Num2;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IList<A> unsortedList = new List<A>();
            for (int i = 0; i < 10; i++)
            {
                if (i % 2 == 0)
                    unsortedList.Add(new A { Num1 = i, Num2 = i*i });
                else
                    unsortedList.Add(new A { Num1 = 2*i, Num2 = i });
            }
            foreach (var item in unsortedList)
                Console.WriteLine(item);

            Console.WriteLine();

            var sortedList = unsortedList.OrderBy(n => n.Num1).ThenBy(n => n.Num2);

            foreach (var item in sortedList)
                Console.WriteLine(item);

            Console.ReadLine();
        }
    }
Editováno 17.8.2013 17:57
 
Nahoru Odpovědět
17.8.2013 17:55
Avatar
jenda
Člen
Avatar
jenda:19.8.2013 8:38

díky všem, nakonec jsem to udělal takto:

class Rekord
{
    public double rychlost;
    public string hrac;

    public Rekord(string Hrac, double Rychlost)
    {
        rychlost = Rychlost;
        hrac = Hrac;
    }
}

vytvořil jsem objekt Rekord[] vysledek = new Rekord[6];

a třídění pak:

Array.Sort(vysledek, delegate(Rekord vysledek1, Rekord vysledek2)
{
    return vysledek1.rychlost.CompareTo(vysledek2.rychlost);
});

Možná to není úplně ideálně a správně, ale funguje to :-)

 
Nahoru Odpovědět
19.8.2013 8:38
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 9 zpráv z 9.