|
|
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
Всех приветствую! У меня вопрос: есть массив отсортированных по возрастанию строк. Нужно найти концевые индексы подмассива элементов, начинающихся с подстроки. Пример: есть массив Код: plaintext Код: plaintext Код: plaintext Как лучше реализовать данный алгоритм? (чтобы был не слишком сложный и работал относительно быстро). Кол-во строк в массиве может достигать десятки тысяч. Если что, язык программирования Java. Ссылки на статьи приветствуются. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 04:48 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
tipoc wrote: > Как лучше реализовать данный алгоритм? Отталкиваться от двоичного поиска. -- We are all going to hell and I'm driving the bus Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 04:56 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
ErV> Как лучше реализовать данный алгоритм? Отталкиваться от двоичного поиска. Пытался, но в голову не приходит явное решение. Да и двоичный поиск хорош только для точного поиска. Может есть другие решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 05:02 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
> Если что, язык программирования Java Если что, свалить в ado recordset и искать в нем доступными средствАми ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 06:37 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
tipoc wrote: > Автор: tipoc >> ErV >>> Как лучше реализовать данный алгоритм? >> Отталкиваться от двоичного поиска. > > Пытался, но в голову не приходит явное решение. Да и двоичный поиск > хорош только для точного поиска. Это не так. Его вполне можно использовать и в этом случае. Я тут как-то описывал свое видение алгоритма тут . Возможно, поможет составить нужный алгоритм. Для поиска интервала, его придется применять дважды - для поиска первого элемента и последнего элемента. Кроме того, результаты первого поиска могут сузить интервал для второго. > Может есть другие решения? Если не преобразовывать массив или не строить доп.структур, то пожалуй нет. Если можно преобразовывать, то я бы подумал в первую очередь о trie. все-таки в нем время поиска пропорционально длине искомой строки (в данном случае - за два шага). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 07:06 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
tipoc wrote: > Да и двоичный поиск хорош только для точного поиска. Варианты: 1) проводим поиск дважды. В первом случае ищем элемент, который начинается с нужной строки, и имеет перед ним строку "меньше" него. Вторым поиском ищем элемент, который начинается с нужной подстроки, но содержит после него подстроку "больше" него. Это можно задать в критерии сравнения. 2) Тупо находим любой элемент, начинающийся с нужной подстроки и ищем первый и последний элемент такого типа последовательным перебором от найденного элемента. (в сторону начала и в сторону конца массива). -- We are all going to hell and I'm driving the bus Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 12:20 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
ErV1) проводим поиск дважды. В первом случае ищем элемент, который начинается с нужной строки, и имеет перед ним строку "меньше" него. Вторым поиском ищем элемент, который начинается с нужной подстроки, но содержит после него подстроку "больше" него. Это можно задать в критерии сравнения. Так и сделаю. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2007, 19:14 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
в Яве делается элементарно: Код: plaintext 1. 2. 3. 4. 5. где stringArray это массив стрингов - String[]. s - искомая подстрока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 18:10 |
|
||
|
поиск в массиве строк начинающихся с подстроки
|
|||
|---|---|---|---|
|
#18+
tipocВсех приветствую! У меня вопрос: есть массив отсортированных по возрастанию строк. Нужно найти концевые индексы подмассива элементов, начинающихся с подстроки. ..... Как лучше реализовать данный алгоритм? (чтобы был не слишком сложный и работал относительно быстро). Кол-во строк в массиве может достигать десятки тысяч. Если что, язык программирования Java. Ссылки на статьи приветствуются. :) Насколько я понимаю, вы кодите словарь. Если объем словаря укладывается в границы свободной памяти ОС, то можно хранить все слова в массиве. Более продвинутое решение - подумать над коллекцией, которая быстро ищет "ключи в диапазоне" (например BTree). Не забывайте, что время инициализации массива - тоже важно. Если он должен быть персистентным то так или иначе вы его будете хранить во внешнем файле. Значит надо подумать о том, как он будет загружатся и как (когда) выгружатся, чтобы не быть балластом для ОС и других приложений. В остальных случаях - рулит встраиваемая СУБД. Попробуйте прикрутить JavaDB или HSQL. Обратите внимание на индексы по текстовым полям, индексно-организованные таблицы, индексы по функции. Это может пригодится. Всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2007, 22:19 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=153&tid=1345693]: |
0ms |
get settings: |
6ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 393ms |

| 0 / 0 |
