.NET 4.x Поиск минимума (оптимизация) - C#

Узнай цену своей работы

Формулировка задачи:

Собственно скорее эта задача из вопроса об оптимизации. Есть список и в нем всегда железно _List.Count>=2
List<Int32> _List;
В программе надо найти минимальный элемент и элемент который идет следом за минимальным Как я щас делаю
                var mi = GetMinIndex();
                var item1 = _List[mi];
                _List.RemoveAt(mi);
                mi = GetMinIndex();
                var item2 = _List[mi];
                _List.RemoveAt(mi);
Но тогда GetMinIndex() вызывается 2 раза. Что естественно сказывается отрицательно на большом списке. Можно ли как ни будь объединить задачу и возвращать сразу 2 индекса/элемента. Юзая при этом всего 1 проход по массиву?

Решение задачи: «.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 };
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы