Autor Beitrag
Bloomquist
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 06.01.12 15:25 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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()';