|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.05.2013, 21:05 | #1 |
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
как уменьшить время работы программы
Подскажите пожалуйста как уменьшить время работы программы на 0.5 секунд.
int n1 = int.Parse(Console.ReadLine()); int[] a = new int[n1]; for (int i = 0; i < n1; i++) { a[i] = int.Parse(Console.ReadLine()); } int n2 = int.Parse(Console.ReadLine()); int[] b = new int[n2]; for (int j = 0; j < n2; j++) { b[j] = int.Parse(Console.ReadLine()); } Array.Sort(a); int k=0; for (int j = 0; j < b.Length; j++) { for (int i = 0; i < a.Length; i++) { if (b[j] == a[i]) { k++; break; } } } Console.WriteLine(k); |
26.05.2013, 21:23 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
Отсортируйте оба массива и "идите" по ним, сравнивая элементы.
Перемещайте указатель в том массиве, где текущий элемент меньше. Если текущие элементы совпадают, то увеличивайте счетчик. Если один из массивов закончился, то выводите значение счетчика. Примерно: Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 26.05.2013 в 21:28. |
26.05.2013, 21:24 | #3 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
А что? код выполняется дольше чтоли?
Максимальные задержки тут будут зависеть от пользователя пока он в консоли строку введет. Ну если хотите можете разузнать про метод Sort() и попытатся реализовать более быструю сортировку. Мне по крайней мере неизвестно какой метод реализован в этом методе. Уж не пузырем ли. Можно разбить последнюю группу циклов на 2 отдельных цикла. O(n) + O(n) < On(n*n) Вроде так.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
26.05.2013, 21:25 | #4 |
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
я по условию задачи не могу отсортировать второй массив
|
26.05.2013, 21:27 | #5 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Сколько время выполенния вашего кода?? замерять можно в классе StopWatch
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
26.05.2013, 21:30 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
Тогда используйте двоичный поиск (двоичный поиск).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
26.05.2013, 21:34 | #7 |
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
Это единственный вариант? время выполнения программы 2.046 а надо не больше 2
|
26.05.2013, 21:35 | #8 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Откуда такое время??? Где тут самый долгий кусок?? Проанализируйте код.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
26.05.2013, 21:38 | #9 |
Пользователь
Регистрация: 31.03.2013
Сообщений: 52
|
Не подскажите как его проанализировать?
|
26.05.2013, 21:41 | #10 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
System.Diagnistics.Stopwatch stw = new ...
после каждого блока, цикла, метода ставьте stw.stop() смотрите сколько там EllapsedMilliseconds. Затем stw.restart() и до следующего стопа. Только учтите что таймер идет даже если вы в брэйке стоите. Поэтому код должен выполнятся от stw.restart() до stw.stop() без остановок
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Время Работы Программы | shilovec5377 | Общие вопросы Delphi | 1 | 17.04.2012 17:15 |
Как можно уменьшить время выполнения запроса. | ajevgen | PHP | 4 | 07.09.2011 15:55 |
VS 2010 - как поменять текст у кнопки во время работы программы, из .cpp файла? | MrRockchip | Общие вопросы C/C++ | 3 | 21.02.2011 22:44 |
Время работы программы | Magist | Компоненты Delphi | 5 | 24.10.2009 20:52 |
Как узнать время работы программы в паскаль? | bullvinkle | Помощь студентам | 2 | 26.12.2008 11:20 |