Оптимизировать код - 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;
- * * * * * * * * * * }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д