![]() |
|
Модераторы: Poseidon |
![]()
|
|
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Допустим, есть массив.Надо определить, есть ли в нем элементы с одинаковым значением.
Код писать не надо, поделитесь мыслями, алгоритмом. Надо сортировать? Можно без сортировки как-то обойтись? Опять же, прошу без кода, только мысли, алгоритм максимум и все. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: нет Всего: 118 |
два вложенных for ?
на пальцах это имхо должно выголядеть как берем элмент 0 ... пробегаем массив от 1-ого до конца, попутно сравнивая берем элемент1 ... пробегаем от 2-ого до конца сравнивая ............... до конца перебора) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Не слишком большое время выполнения получится?
Ну, понятно, если в массиве 5 чисел... а если мы миллиончик в массиве имеем... )) перебирать будем 999 999 чисел? и циклов for получится (КОЛ_ВО_чисел_в_массиве - 1 ) ??? Это сообщение отредактировал(а) frenchman - 3.1.2007, 21:22 |
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: нет Всего: 118 |
Это сообщение отредактировал(а) jonie - 3.1.2007, 21:24 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
ok. а если жертвовать не скоростью, апамятью? тогда как?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 6 Всего: 207 |
если известен диапозон чисел в массиве
то сортировка подсчетом -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
А можно я с кодом всё-таки?
|
|||
|
||||
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
если задаем массив с клавы?
|
|||
|
||||
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
если не использовать эти библиотеки :
#include <vector> #include <map> я их не знаЮ))) только можно сказать, взялся за с++ ))) |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: нет Всего: 38 |
А можно еще и так : Задаем массив, создаем множество set на основе этого массива, если размер множества меньше размера массива - значит есть повторяющиеся элементы.
Не знаю, может это бредовое решение, но все таки. P.S. Ну если без библиотек то надо еще мозги напрягать Это сообщение отредактировал(а) KelTron - 3.1.2007, 21:57 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
Есть замечательная штука - хэш. Это как раз и реализовывает <map>.
Смысл таков: Создаёшь массив "BIG" на много элементов (сколько памяти не жалко). Скажем, массив у нас длиной N. Обнуляешь все элементы в "BIG". Проходишь по своему массиву "INPUT" чисел. И вырешиваешь индекс в "BIG" по формуле: число%N. То есть:
Из за %N ты никогда не выйдешь за рамки массива. Но тут есть опасность, что два разные числа A и B дадут одинаковый результат. Т.е A%N==B%N. Таких совпадений тем больше, чрм меньше N. (Только случае, если N>=максимальному числу из INPUT, совпадений не будет).Исходное число ты уже никак не получишь. Поэтому их целесообразно сохранять в лист на индехкс в BIG и каждый раз по листу бежать проверять. А кодом наверное полегче будет.
Писал "от руки" на ошибки не проверял. |
||||
|
|||||
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Собственно я решил задачу так :
По умолчанию взяв кол-во эл-тов вмассиве равным 5ти, пересравнивал каждый элемент с последующим остатком массива... |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
Собственно - это обыкновенный перебор, но не алгоритм.
Для простоты понимания обьясню идею хэша "на пальцах": int BIG[N]; for(i=0;i<cnt;i++) if(BIG[INPUT[i]]==1) printf("duplikat! %i" INPUT[i]); Добавлено @ 22:49 да, кстати: Модератор: Название темы должно отражать ее суть! |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 11 Всего: 360 |
Для домашних заданий, курсовых, существует "Центр Помощи".
Тема перенесена! |
|||
|
||||
| frenchman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Кстати, это не домашнее задание! Я для себя ... хочу научиться, взял задачник и тренируюсь...
Добавлено @ 23:06 if(BIG[INPUT[i]]==1) можешьэту строчку подробно обьяснить? что значит? |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |