Информация об изменениях

Сообщение Re: вгоняет в депрессию от 12.11.2024 7:57

Изменено 12.11.2024 7:58 netch80

Re: вгоняет в депрессию
Здравствуйте, Codealot, Вы писали:

C>https://stackoverflow.com/questions/13755007/c-sharp-find-highest-array-value-and-index


C>
C> int maxValue = anArray.Max();
C> int maxIndex = anArray.ToList().IndexOf(maxValue);
C>


C>198 плюсов!

C>Ох ты ж б*я с*а е*й п*ц.

C>Ну и в качестве вишенки на торте:

C>

C>Director/CTO at TensorStack Ltd.


Давай трезво подумаем.
Есть вариант сначала найти максимум — O(N), затем поискать его индекс — снова O(N). Итого O(N).
Есть вариант явным циклом, менее читаемый, и всё равно O(N).

При этом, если посмотреть с точки зрения процессора, первый скан погрузит массив в кэш, поэтому второй пройдёт быстрее, и будет, условно, не 2*C*N, а 1.1*C*N.

При этом при ответе сказано:

This is not the most glamorous way but works.


Что не так?

Ну да, я бы ещё дописал "а если вы хотите ну совсем экономно, разверните цикл ручками". Собственно это всё, что не совсем хорошо.
Re: вгоняет в депрессию
Здравствуйте, Codealot, Вы писали:

C>https://stackoverflow.com/questions/13755007/c-sharp-find-highest-array-value-and-index


C>
C> int maxValue = anArray.Max();
C> int maxIndex = anArray.ToList().IndexOf(maxValue);
C>


C>198 плюсов!

C>Ох ты ж б*я с*а е*й п*ц.

C>Ну и в качестве вишенки на торте:

C>

C>Director/CTO at TensorStack Ltd.


Давай трезво подумаем.
Есть вариант сначала найти максимум — O(N), затем поискать его индекс — снова O(N). Итого O(N).
Есть вариант явным циклом, менее читаемый, и всё равно O(N).

При этом, если посмотреть с точки зрения процессора, первый скан погрузит массив в кэш, поэтому второй пройдёт быстрее, и будет, условно, не 2*C*N, а 1.1*C*N.

При этом при ответе сказано:

This is not the most glamorous way but works.


Что не так?

Ну да, я бы ещё дописал "а если вы хотите ну совсем экономно, разверните цикл ручками". Собственно это всё, что не совсем хорошо.

PS: А зачем ты вообще пошёл искать ответ на такой вопрос? )