Оптимизировать код - C# (183068)

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

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

Написал программу, которая считывает данные из файла(вещественные числа), записывает данные в массив, находит минимальное, среднее и максимальное число и выводит в файл их порядковый номер. Как оптимизировать программу, чтобы время выполнения не выходило за рамки в 2 секунды? Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Globalization;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            string text = File.ReadAllText(@"in");
            string[] numberStrings = text.Split(new char[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            short valuesCount = short.Parse(numberStrings[0]); // <<< количество элементов в массиве
 
            float[] values = new float[valuesCount]; // <<< создание массива длиной valuesCount
 
            for (short index = 0; index < valuesCount; ++index)
            {
                values[index] = float.Parse(numberStrings[index + 1], CultureInfo.InvariantCulture.NumberFormat); // <<< заполнение массива
            }

            using (StreamWriter sw = new StreamWriter(@"out"))
            {
                int min = 0;
                int max = 0;
                int average = 0;
                float[] massive = new float[valuesCount];
                for (short c = 0; c < values.Length; c++)
                {
                    for (short i = 0; i < values.Length; i++) // <<< нахождение среднего числа
                        {
                            massive[i] = Math.Abs(values.Average() - values[i]);
                        } 
                    for (short i = 0; i < massive.Length; i++)
                    {
                        if (massive[i] == massive.Min()) average = i + 1; 
                    }   

                    if (values[c] == values.Min()) // индекс минимального
                    {
                        min = c + 1;
                    }
                    if (values[c] == values.Max()) // индекс максимального
                    {
                       max = c + 1;
                    }
                    
                }
                sw.Write("{0} {1} {2}", min, average, max); // вывод
            }
 
        }
    }
}

Решение задачи: «Оптимизировать код»

textual
Листинг программы
for (short c = 0; c < values.Length; c++)
* * * * * * * * {
* * * * * * * * * * for (short i = 0; i < values.Length; i++) // <<< нахождение среднего числа
* * * * * * * * * * * * {
* * * * * * * * * * * * * * massive[i] = Math.Abs(values.Average() - values[i]);
* * * * * * * * * * * * } 
* * * * * * * * * * for (short i = 0; i < massive.Length; i++)
* * * * * * * * * * {
* * * * * * * * * * * * if (massive[i] == massive.Min()) average = i + 1; 
* * * * * * * * * * }

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


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

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

15   голосов , оценка 4.533 из 5