|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.09.2016, 14:40 | #11 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
попробуйте такой код:
Код:
Последний раз редактировалось Serge_Bliznykov; 22.09.2016 в 14:50. |
22.09.2016, 14:50 | #12 |
Пользователь
Регистрация: 17.09.2016
Сообщений: 25
|
К сожалению не помогло.
Не подскажите, а этот код как оптимизировать? Может так работать будет быстрее. Код:
|
22.09.2016, 14:57 | #13 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
22.09.2016, 15:13 | #14 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Похоже evg_m уже писал об этом (в п.1), но у тебя нет никакой реакции на этот счет, - а ведь это важно! Это может существенно ускорить работу программы (я продублирую) ...
В настройках моего компилятора есть возможность оптимизации кода либо по объёму, занимаемой в памяти программы, либо по скорости работы этой самой программы. Понимаешь, есть обратная связь память/скорость. 34.jpg А теперь к твоей программе: когда выделяешь динамическую память ("a = new int[n];") под данные ты явно (может не осознанно) пытаешься экономить оперативную память компьютера (в ущерб быстродействию), т.к. выделяешь её строго под данные - ни одного байта больше. А ты хоть знаешь сколько времени эта операция осуществляется?... Может лучше использовать статическое резервирование памяти под массив: "int a[100]", "int a[1000]", "int a[10000]".... Посмотри какая расточительность памяти компьютера. Класс, ведь чем больше займешь памяти - тем быстрее будет работать программа (помнишь выше изложенную закономерность). Последний раз редактировалось ura_111; 22.09.2016 в 15:15. |
22.09.2016, 15:20 | #15 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
если уж не хотите делать ВТОРОЙ массив, то могу предложить другую идею.
уменьшить длину просмотра для поиска уникальных. Для этого собИрать все уникальные в начало. Код:
Да, и на массиве с большим числом неповторяемости вряд ли пройдет тесты.
программа — запись алгоритма на языке понятном транслятору
|
22.09.2016, 15:35 | #16 |
Пользователь
Регистрация: 17.09.2016
Сообщений: 25
|
Всем большое спасибо! Проблема решена!
|
22.09.2016, 16:18 | #17 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
22.09.2016, 16:28 | #18 |
Пользователь
Регистрация: 17.09.2016
Сообщений: 25
|
Помогла быстрая сортировка и один проход по циклу.
|
22.09.2016, 16:45 | #19 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
22.09.2016, 20:59 | #20 |
Форумчанин
Регистрация: 24.01.2011
Сообщений: 774
|
У тебя сложность n^2 в начальном варианте. То есть, ты за O(n) выбираешь первые элементы, а потом за O(n) ищешь его копии. Это медленно.
Вариант с быстрой сортировкой лучше, так как ты сортируешь за O(n log n), а потом за O(n) ищешь числа. В итоге получается O(n log n). Есть такой вариант, он лучше всего, так как там нет утечки памяти, как у тебя, да и работает он за O(n), так как проверка наличия и добавление элементов в хэш-таблицу работает за константу: Код:
a.k.a. Angelicos Phosphoros
Мой сайт |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод различных элементов массива. | pirat2k | Общие вопросы C/C++ | 5 | 24.03.2016 17:10 |
подкорректировать: Дан массив, все элементы которого упорядочены. Найти количество различных элементов в данном массиве ( Delphi ) | schibeki | Помощь студентам | 9 | 20.02.2014 09:39 |
Дан массив A[7,7]. Найти количество столбцов, составленных из попарно различных элементов (Pascal) | yul111-95 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 02.02.2013 22:01 |
Сумма различных элементов массива | bin11 | Помощь студентам | 0 | 21.05.2012 15:30 |
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов | Strax | Фриланс | 11 | 12.06.2010 20:13 |