.NET 4.x Поиск минимума (оптимизация) - C#
Формулировка задачи:
Собственно скорее эта задача из вопроса об оптимизации.
Есть список и в нем всегда железно _List.Count>=2
В программе надо найти минимальный элемент и элемент который идет следом за минимальным
Как я щас делаю
Но тогда GetMinIndex() вызывается 2 раза. Что естественно сказывается отрицательно на большом списке.
Можно ли как ни будь объединить задачу и возвращать сразу 2 индекса/элемента. Юзая при этом всего 1 проход по массиву?
List<Int32> _List;
var mi = GetMinIndex(); var item1 = _List[mi]; _List.RemoveAt(mi); mi = GetMinIndex(); var item2 = _List[mi]; _List.RemoveAt(mi);
Решение задачи: «.NET 4.x Поиск минимума (оптимизация)»
textual
Листинг программы
static int[] MySearch(int[] arr) { int index1 = 0, index2 = 0; int min1 = int.MaxValue; int min2 = int.MaxValue; ; for (int i = 0; i < arr.Length; i++) { if (arr[i] < min1) { min2 = min1; index2 = index1; index1 = i; min1 = arr[i]; } else if (arr[i] < min2) { index2 = i; min2 = arr[i]; } } return new int[] { index1, index2 }; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д