ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

подскажите алгоритм
  #1  
Старый 06.02.2007, 16:29
Аватар для Termin@L
Termin@L
Участник форума
Регистрация: 07.12.2006
Сообщений: 192
Провел на форуме:
492591

Репутация: 123
По умолчанию подскажите алгоритм

Народ подскажите, как считать большой текстовый файл(допустим словарь) и очистить его от повторов или наоборот, например найти элемент повторяющийся наибольшее кол-во раз, какой самый быстрый способ (желательно на php)?
 
Ответить с цитированием

  #2  
Старый 06.02.2007, 20:40
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Убирал совпадения из фалика в 200000 строк таким макаром:

Код:
<?php

$data_in = file("numbers.txt");


$data2 = file("base_final.txt");

$data_in = array_merge($data_in, $data2);

sort(&$data_in);


$t = count($data_in);

$iterator = 0;

$data_out = array();

$data_out[] = $data_in[0];

for($i = 1; $i < $t; $i++)
{
	if($data_in[$i] != $data_in[$iterator])
	{
		$data_out[] = $data_in[$i];
		$iterator = $i;
	}
}

file_put_contents("base_final.txt", join("", $data_out));

echo "Done! Total " . count($data_out) . " items";
?>
 
Ответить с цитированием

  #3  
Старый 06.02.2007, 20:50
Аватар для Srg
Srg
Участник форума
Регистрация: 27.01.2006
Сообщений: 118
Провел на форуме:
402743

Репутация: 22
Отправить сообщение для Srg с помощью ICQ
По умолчанию

А еще бы комментов ......
 
Ответить с цитированием

  #4  
Старый 06.02.2007, 20:52
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

>>Народ подскажите, как считать большой текстовый файл
2Helios мало того что алгоритм неэффективен так он еще и под заданную задачу не подходит.
 
Ответить с цитированием

  #5  
Старый 07.02.2007, 14:10
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Комменты:
После считывания файла все его строки сортирую, при этом одинаковые окажутся рядом. На это совпадение и проверяю. При желании можно прикрутить strtoupper/strtolower дабы не обращать внимания на регистр.

2ZaCo Напиши эффективнее, ты ж чингачкук.
 
Ответить с цитированием

  #6  
Старый 07.02.2007, 20:00
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

2Helios я напишу вот только задачи не вижу.
 
Ответить с цитированием

  #7  
Старый 07.02.2007, 20:10
Аватар для genom--
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

Цитата:
Сообщение от Helios  
Комменты:
После считывания файла все его строки сортирую, при этом одинаковые окажутся рядом. На это совпадение и проверяю. При желании можно прикрутить strtoupper/strtolower дабы не обращать внимания на регистр.

2ZaCo Напиши эффективнее, ты ж чингачкук.
понимаешь твоя ошибка в том что при сортировке тебе полюбому придется заносить все в массив и они будут немеренно жрать оперативы о-- особенно если словарь метров на 300 ---
 
Ответить с цитированием

  #8  
Старый 07.02.2007, 20:48
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
понимаешь твоя ошибка в том что при сортировке тебе полюбому придется заносить все в массив и они будут немеренно жрать оперативы о-- особенно если словарь метров на 300 ---
Либо память, либо скорость.
Т.к. память безгранична за счет раздела подкачки, то...
 
Ответить с цитированием

  #9  
Старый 07.02.2007, 21:48
Аватар для Termin@L
Termin@L
Участник форума
Регистрация: 07.12.2006
Сообщений: 192
Провел на форуме:
492591

Репутация: 123
По умолчанию

2 ZaCo задача - находить повторяющиеся элементы в текстовом файле и производить с ними различные действия

Последний раз редактировалось Termin@L; 07.02.2007 в 21:51..
 
Ответить с цитированием

  #10  
Старый 08.02.2007, 11:17
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Скрипт ентот исполняться будет не сотню раз одновременно, а в один поток, поэтому на ОЗУ жаловаться ИМХО нет смысла. А насчет того, что считывать нужно весь файл сразу - в другом случае прогонять поиск совпадений по циклу и сортировку пришлось бы после каждого считывания => время исполнения увеличилось бы в разы.

З.Ы.: Кто знает другие варианты - пишите, а то и самому интерессно)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите в движке чата провап Future Чаты 11 11.02.2007 17:55
Подскажите работающие Прокси!!! ZzSnakezZ Чаты 4 10.03.2005 23:10
Подскажите Proxy $ZLO$ Болталка 3 06.02.2005 14:29



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ