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