Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для S A
10 / 9 / 4
Регистрация: 02.10.2016
Сообщений: 62

Оптимизировать код

06.10.2016, 17:21. Показов 1204. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал программу, которая считывает данные из файла(вещественные числа), записывает данные в массив, находит минимальное, среднее и максимальное число и выводит в файл их порядковый номер. Как оптимизировать программу, чтобы время выполнения не выходило за рамки в 2 секунды?
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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); // вывод
            }
 
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2016, 17:21
Ответы с готовыми решениями:

Оптимизировать код
Господа, я являюсь новичком. Написал небольшую прожку для тренировки, но уверен что опытный программист назовет реализацию говнокодом. ...

Оптимизировать код
Как оптимизировать код? Задача: Задано трехзначное число. Какая цифра в нем больше: первая или последняя? using System; ...

Оптимизировать код
Приветствую Всех Посмотрите, пжта, кусок код. Очень медленно работает. Много поток, вообще идти не хочет bool flagCikl =...

7
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
06.10.2016, 17:26
Лучший ответ Сообщение было отмечено S A как решение

Решение

Ну, как минимум - дергать на каждой итерации что-то вроде values.Average() - плохая идея)
0
 Аватар для S A
10 / 9 / 4
Регистрация: 02.10.2016
Сообщений: 62
06.10.2016, 17:29  [ТС]
Вынести отдельно это значение?
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
06.10.2016, 17:34
Ага...
А точно надо именно массив использовать? List<float> нельзя?

Добавлено через 3 минуты
А нахождение среднего - это Вы находите максимально приближенный элемент к среднему, или что?
0
 Аватар для S A
10 / 9 / 4
Регистрация: 02.10.2016
Сообщений: 62
06.10.2016, 17:35  [ТС]
Подразумевается работа с массивом.
Да, ближайшее к среднему.
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
06.10.2016, 17:45
Побыстрее не стала?

Добавлено через 4 минуты
Цитата Сообщение от S A Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
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; 
* * * * * * * * * * }
Эта последовательность тоже вызывает вопросы

Добавлено через 37 секунд

Не по теме:


как-то странно код отобразился

1
 Аватар для S A
10 / 9 / 4
Регистрация: 02.10.2016
Сообщений: 62
06.10.2016, 17:54  [ТС]
Да, вроде помогло - вынес эти значения Min, Average, Max отдельно, чтобы не проверять каждый раз, проходит по времени. Спасибо)
0
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
06.10.2016, 17:55
Не за что) но так-то можно и попроще сделать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2016, 17:55
Помогаю со студенческими работами здесь

Оптимизировать код
Препод сказал оптимизировать код, а что изменить вообще не знаю public class Test { public double a; public...

Оптимизировать код
Всем привет! Как вы считаете, как можно было бы оптимизировать этот кусок private int...

Оптимизировать код
Добрый день, форумчане! roundButton1.Enabled = false; roundButton1.BackColor = Color.LightGray; roundButton1.BackColor2 =...

Палиндром, оптимизировать код
Задание выглядело так: Напишите программу, которая возвращает наибольшее число палиндром, которое является произведением двух простых...

Как оптимизировать код?
Всем добрый день) Недавно начал изучать C# и решил написать такую программу: В 50-х годах XX века был предложен (к сожалению,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru