Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Сообщ.
#1
,
|
|
|
Есть большой упорядоченный массив строк. Двоичным поиском ищу максимальное совпадение.
Проблема в том, двоичный поиске в результате сходится в центре последовательности "похожих". например есть массив "rosea" "roseb" "rosec" "rosed" "rosee" ищем "rose" двоичный поиск при сравнении только с первых 4 символов найдет "rosec" - центр последовательности у которой 4 буквы совпадают с искомым. Задача насколько я понимаю сводится к быстрому поиску минимума ф-ции разности между искомой и получаемой строкой. Причем разность считается как: (a - образец, b - очередная строка) i=0..Len(a) - 1 r = UM( |a[i]-b[i]| ) + b[Len] (если строка b - длиннее образца) Подскажите что придумать поэффективнее, все дело происходит на Palm-е, массив 250 тыс элементов ;-) Сейчас работает быстро, необходима коррекция просто. |