To pytanie zostało zadane w taki lub inny sposób na SO, ale nie w ten sposób. Właśnie natknąłem się na bardzo podstawowy problem, w którym szukałem rozwiązania spełniającego wymagania :-) Mam listę obiektów, które mają dwie właściwości całkowite. Teraz chcę znaleźć maksymalną wartość obu właściwości wszystkich obiektów na liście.
wymyśliłem trzy rozwiązania:Znajdź maksymalną wartość dwóch (lub więcej) właściwości na liście
Pierwsze podejście:
int max = Math.Max(list.Max(elem => elem.Nr), list.Max(elem => elem.OtherNr));
Drugie podejście:
public int Max(List<Thing> list)
{
int maxNr = 0;
foreach (var elem in list)
{
if (elem.Nr > maxNr)
maxNr = elem.Nr;
if (elem.OtherNr > maxNr)
maxNr = elem.OtherNr;
}
return maxNr;
}
Trzecim rozwiązaniem byłoby zrobić sortowania zarówno atrybutu, a następnie po prostu wziąć pierwsze wejście i zdobądź jedną lub drugą nieruchomość.
Chciałbym znaleźć najszybszy sposób na zrobienie tego. Tak więc ze wszystkich podejść podoba mi się drugi post (z punktu widzenia performansu). Mimo że pierwszy jest krótszy, musisz dwukrotnie przejść przez listę.
Jakieś inne rozwiązania?
Czy to zbyt wolno? W rzeczywistości pierwsza wygląda mi dobrze pod względem czytelności i wydajności. Zakładam, że bez zmian strukturalnych nie dostaniesz go szybciej. –
Nie, nie, po prostu zastanawiałem się, jaki najszybszy algorytm jest dla tego – derape