Показать сообщение отдельно

  #2  
Старый 03.02.2010, 08:24
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
Провел на форуме:
1229135

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

Цитата:
Сообщение от 1n0y  
собстно решил проапгрейдить поиск в своём удоляторе до бинарного. всё бы нечего, но результаты простого перебора и бинарного поиска заметно отличаются - в объёмных базах бинарный не находит примерно 10% совпадений. wtf?!


вот кусок бинарного:
Код:
//f4, f5 - стринглисты

     f5.sort;
     f4.sort;   
      while I<=f4.Count-1 do
            begin
             verh:=0;
             niz:=f5.count;
             found:=FALSE;
              repeat
               sred:=trunc((niz-verh)/2)+verh;
                 if  AnsiPos(f4.Strings[I],f5.strings[sred])<>0
                  then found:=TRUE
                 else
                  if  f4.Strings[I < f5.strings[sred]
                    then niz:=sred-1
	          else verh:=sred+1;
              until (verh > niz) or found or (verh = f5.count);
            if found
             then
              begin
               form1.Memo6.Lines.Add(f5.Strings[sred]);
               I:=I+1;
              end
            else
             I:=I+1;
          end
естественно, все стринглисты сортирую перед поиском.
вчомпроблема? или это такая фича бинарного поиска?
мб все из-за AnsiPos?
 
Ответить с цитированием