Процедура, которая изменяет входящий массив double путем нормализации (без использования Linq)

Я уже записал код для процедуры, которая изменяет входящий массив значений типа double, нормализуя его. Чтобы нормализовать массив чисел, мне пришлось делить каждое число на максимальное значение в массиве. Тем не менее, мой код заставляет меня реализовать System.Linq

Вот мой код:

public void Test9(double[] numbers)
{
    double MaximumNumber = numbers.Max();
    for (int i = 0; i < numbers.Length; i++)
    {
        numbers[i] = numbers[i] / MaximumNumber;
    }
}

Мой вопрос, как я могу достичь того же решения без реализации using System.Linq; в верхней части программы.

2 ответа

Решение

Сначала просмотрите массив и получите максимальное значение (убедитесь, что сначала в нем есть элементы, поэтому проверьте numbers.Length > 0):

double max = numbers[0];

for (int i = 1; i < numbers.Length; i++)
{
    if (numbers[i] > max)
    {
        max = numbers[i];
    }
}

Просто найдите максимум, перебирая массив

public void Test9(double[] numbers)
{
    // Find the maximum without linq
    double maxNumber = double.MinValue;
    for (int i = 0; i < numbers.Length; i++)
    {
       if(numbers[i] > maxNumber) 
          maxNumber = numbers[i];
    }

    for (int i = 0; i < numbers.Length; i++)
    {
        numbers[i] = numbers[i] / maxNumber;
    }
}
Другие вопросы по тегам