![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 5 Всего: 14 |
Народ помогите, есть следующая задача имееться масиив большой более 75 тыс. элементов, в нем ест элементы которые встречаються один раз есть те которые дублированы несколько раз так вот надо на выходе полукчить два массива один с элементами встречающимися только один раз, а второй с теми котые входят в начальный масиив два раза и более. Как это реализовать на PHP или Perl пока четкого механизма не придумал.
|
|||
|
||||
| nevermind |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 15.5.2004 Репутация: нет Всего: нет |
Для этого тебе придется "прощупать" каждый элемент
Создаешь два массива 1 для дубликатов 2 не для дубликатов Создаешь в исходном итератор, и сравниваешь элементы массива по очереди как только нашел дубликат, то копируй этот элемент в массив 1 и идешь дальше. Если дубликата не нашлось то копируй в элемент массив 2. Это сообщение отредактировал(а) nevermind - 31.7.2004, 19:38 |
|||
|
||||
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 5 Всего: 14 |
да на этом комп просто повеситься прикинь каждый элемент сравнить с 75 тыс (придеться произвести 75000 в степени 75000 сравнений) нет должна быть стандартная функция которая покажет сколько раз каждый элемент входит в массив
|
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 10 Всего: 73 |
Что-то в мануале ничего не нашел. Есть идея склеить имплодом и прошерстить регами.
-------------------- Теперь при чем :P |
|||
|
||||
| RaZoR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 6.5.2004 Где: Оренбург Репутация: нет Всего: 1 |
щас... есть одна идея... скоро выложу наверное
Это сообщение отредактировал(а) RaZoR - 31.7.2004, 22:03 |
|||
|
||||
| nevermind |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 15.5.2004 Репутация: нет Всего: нет |
Намного меньше на самом деле Ведь если мы уже сранили 1 элемент со 2, то нам совсем не обязательно сравнивать 2 с 1. Делается просто, на какой позиции сейчас находится итератор, сравнение производится наченая не с 1 элемента, а последующей от итератора позиции допустим мы имеем 10 элементов, то количество сравнений будет: 9+8+7+6+5+4+3+2+1=45 сравнений но не в коем случае не 10^10=10000000000 как ты написал |
|||
|
||||
| RaZoR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 6.5.2004 Где: Оренбург Репутация: нет Всего: 1 |
короче вот... написал кое-что... может быть можно лучше, но это первое, что пришло в голову.
$array - начальный массив $new_array1, $new_array2 - два новых массива
а может я ваще вопрос не понял... Это сообщение отредактировал(а) RaZoR - 31.7.2004, 22:27 |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 13 Всего: 87 |
||||
|
||||
| <Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Если бы эти данные лежали в талбице базы данных то все было бы просто:
1)
2)
Это сообщение отредактировал(а) <Spawn> - 1.8.2004, 13:14 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
| Graf Zeppelin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 28.3.2004 Репутация: нет Всего: 1 |
Вобще-то если бы была стандартная функция она тоже бы вешала копм
--------------------
Jah, help me! |
|||
|
||||
| BioMaX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Можно сделать иначе
$string = implode(",", $array); А дальше пройтись строковой функцией на поиск дубликатов... либо меня глючит )) |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
BioMaX, учитывая, что за 5 (прописью: пять!) лет надобность в решении этого вопроса наверняка отпала, то да - глючит, и при том жестоко.
|
|||
|
||||
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 5 Всего: 14 |
жесть. BioMaX как вы вообще эту тему откопали.
я уже и не помню для какого проекта мне такая хрень понадобилась. и что как то ее решил тогда это точно эх.. сейчас бы решилось все за пять минут, таблица в бд и count |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |