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

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

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

Author24 — интернет-сервис помощи студентам
Написал программу, которая считывает данные из файла(вещественные числа), записывает данные в массив, находит минимальное, среднее и максимальное число и выводит в файл их порядковый номер. Как оптимизировать программу, чтобы время выполнения не выходило за рамки в 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2016, 17:21
Ответы с готовыми решениями:

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

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

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

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

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

Решение

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

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

Добавлено через 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
10 / 9 / 4
Регистрация: 02.10.2016
Сообщений: 62
06.10.2016, 17:54  [ТС] 7
Да, вроде помогло - вынес эти значения Min, Average, Max отдельно, чтобы не проверять каждый раз, проходит по времени. Спасибо)
0
70 / 57 / 31
Регистрация: 05.09.2013
Сообщений: 665
06.10.2016, 17:55 8
Не за что) но так-то можно и попроще сделать)
0
06.10.2016, 17:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2016, 17:55
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru