Entwickler-Ecke

Basistechnologien - list<T> sortieren


Bloomquist - Fr 06.01.12 15:25
Titel: list<T> sortieren
Hallo,

ich habe die Aufgabe, per Konsole (erstmal) einige Integers einzugeben und aus diesen anschließend die größte Zahl davon auszugeben.

Fehler abzufangen usw. sollen wir erstmal ignorieren, es geht hierbei nur um die Technik.

Ich habe das schon fertig, aber da ich natürlich lernen möchte, suche ich das optimale und schonende Ergebnis.

Damit ich quasi unendlich Werte eingeben kann, habe ich mich für List<T> entschieden, ein Array muss ich ja vorher definieren.

Hierbei habe folgende 2 Lösungen für die Sortierung, wobei eine ja bereits in List<T> implementiert ist.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
// Die Eingabe der Werte habe ich ausgelassen

// Mit den Methoden von List<T>
List<int> werte = new List<int>();

werte.Sort();
werte.Reverse();
Console.WriteLine("Größter Wert: " + werte[0].ToString());

// Mit einer Schleife
int ergebnis = 0;
for (int i = 0; i < werte.Count; i++)
{
    if (werte[i] > ergebnis)
        ergebnis = werte[i];
}

Console.WriteLine("Größter Wert: " + ergebnis.ToString());


Welche Variante würdet ihr nutzen, wenn ihr z.B. 100 Werte in der Liste habt?


Grüße


Ralf Jansen - Fr 06.01.12 15:36

Die 2.te eher als die 1.te. Nur um das Maximum zu finden ist ein kompletter Sort zuviel Overhead. Reverse ist übrigens unnötig. Der letzte Wert ist das Maximum also 'werte[werte.length-1]'.

Ich würde die 3.te Lösung (per Linq) wählen. Einfach 'werte.Max()';