Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
SUBJ? Задача - написать метод, принимающий массив и возвращающий массив уникальных элементов, содержащихся в том массиве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 19:40 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
Отсортируй массив, удали повторы, вуаля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 19:51 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
при этом выполняется лишняя работа по сортировке массива. куда проще организовать хэш-таблицу, в которой элементы будут хранить число элементов массива с данным значением. осталось только подсчитать число элементов таблицы со значениями 1. имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 20:52 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
да, а индексом будет как-раз и значение элемента массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 21:09 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
maratka Это проходит в явном виде только если элементы массива -- целые неотрицательные числа. Кроме того, сначала надо определить верхнюю границу хэш-массива, чтобы выделить память, иначе это не будет работать быстро (я прав или нет?). А тогда если в исходном массиве есть хотя бы одно ОЧЕНЬ большое число, то столько памяти или не бывает, или жалко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2003, 13:18 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 Ой Вэй сразу видно, что ты не применял хэш-таблицы никогда. лучше почитай про них и про хэш-функции. что мешает придумать хэш-ф-ю для дробных чисел? только отсутствие воображения... ну и остальные проблемы отпадут... вуаля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2003, 17:57 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
Я делал так: Цикл по элементам массива, в нём вложенный цикл, внутри которого проверяется количество вхождений каждого элемента (на 2 можно прерывать внутренний цикл). Те, для которых число вхождений не превышает 1, добавляются в коллекцию типа ArrayList. Дальнше полученный ArrayList преобразуется в массив int, который и возвращается. Как можно сделать более быстрый алгоритм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2003, 00:14 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
2maratka Инетерсно а где по ним инфу можно надыбать ??? Гыыы ты почти земляк , да еще и теска _____________ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2003, 01:13 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 D.O. по-моему (не вникая сильно) так болемене нормально будет. в любом случае, меньше чем 2мя циклами, не обойтись. 1й-перебираем все элементы массива, подсчитываем число вхождений для каждого элемента, 2й - выводим на печать уникальные элементы массива. но это все же быстрее, чем вложенный цикл. так что решать тебе. 2 JibSkeart думаю, литру можно поискать где-нить в учебниках по информатике, посмотри также Кнута, есть еще хорошая книга "Практика Программирования" 'Керниган, Пайк. ищи в инете по ключевому слову - будешь завален инфой. )) вообщето я в этой галактике живу ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2003, 10:55 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
maratka что мешает придумать хэш-ф-ю для дробных чисел? Я написал "в явном виде". Ты же отвечаешь человеку, который в этом не разбирается, а не просто понтуешься. Дальше. ну и остальные проблемы отпадут — разве? Пусть числа натуральные, только нерегулярно расположены, например, степени двойки, всего-навсего 32 штуки (1, 2, 4, ..., 2^31). Придётся или хапнуть памяти 2 гигабайта, или анализировать значения в массиве, по-моему там в общем случае понадобится действий примерно столько, сколько на сортировку. Или у меня опять отсутствие воображения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2003, 16:56 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
ты использовал (писал сам) когда-нить хэши или все же нет? сам придумывал хэш-фии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2003, 17:49 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
Отвечаем вопросом на вопрос? Ну ладно... Я применял этот приём, когда номерами элементов массива являются элементы другого массива. Но там данные читались из таблицы, и можно было надеяться, что максимальное значение элемента массива не очень сильно отличается от количества элементов (т.е. хэш-функция была тождественной). Правильный ответ — "не знаю". И знать не хочу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2003, 20:47 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
Маратка не мудри. Пример: Строки нужно обработать. Предположим от 0 до 5000 символов в длинну. Придумай хорошую хеш функцию, и пожалуйтса, потрудись подсчитать вероятность совпадения хеш функции для двух, трех и т.д. РАЗНЫХ строк. Для полной гарантии несовпадения, результат хеш функции должен как минимум не понизить мощность исх. сообщения (5000*8 бит). Потом посчитай объём памяти для хеш таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2003, 19:16 |
|
||
|
подскажите алгоритм выборки уникальных элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 прогер попробую ответить- массив n. тип элементов - любой (пусть даже строка). искомое число уник.элементов - x. 1) твой вариант с сортировкой - а. сортировка - кол-во вычислений - О(n*log(n)). (сюда включены расходы на сравнение строк - О(n) ит.д.). б. удаление повторов - n*О(1)=О(n) (цикл по всем элементам массива). в. вуаля (распечатка уник.элементов) О(n) (еще раз цикл). итого - О(n*log(n)). 2) вариант с хэш-таблицей- хэш-функция (стащил у Кернигана, но можно придумать свою, это ничего не меняет): hash=31*hash+str ; (в цикле по всем символам строки). hash %= CONST_NHASH; т.о. размер хэш-массива ограничен CONST_NHASH (выбираем мы). Максимальный размер памяти, отводимый под полную хэш-таблицу будет равен= sizeof(HASH_ELEMENT)*x; (догадайтесь почему - правильно, мы храним только уникальные элементы массива. оказывается не все так страшно!). структуру HASH_ELEMENT предлагаю написать самому. при этом подсчет хэша для строки - О(n) (аналогично, но работаем только с одной строкой). Вероятность совпадения думаю роли не играет, она влияет только на скорость доступа к элементам таблицы, которая остается как О(1) (берем лучший случай как и с сортировкой). а. Заполнение хэш таблицы - n*O(n)=О(n) (аналогично). б. Распечатка уник. элементов O(n). Итого - O(n). с числами попроще будет. Но и с сортировкой массива работать будет, так что решать программисту. имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2003, 11:12 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=227&tid=1348635]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
114ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 224ms |

| 0 / 0 |
