посоветуйте алгоритм поиска

  • Автор темы oshmianski
  • Дата начала
O

oshmianski

#1
доброго времени!

дано:
m = отсортированный по убыванию список дат, размерностью N (N может быть больше 10.000)
dateFrom = начальная дата
dateTo = конечная дата

найти:
множество, входящее в список m, начиная от >= dateFrom и до <= dateTo

посоветуйте, плс, алгоритм.
если приложите код, буду безмерно благодарен.
 
04.09.2006
2 566
3
#2
Так как список отсортирован, то наиболее быстры способом поиска будет бинарный (двоичный) поиск. ВотТУТ описание алгоритма с псевдокодом
 
O

oshmianski

#3
Для: European
пасиб. алгоритм хорош для для нахождения полного соответствия.

сложность заключается в том, что список может иметь "пробелы". т.е.
m(1) = 21/06/2007
m(2) = 23/06/2007

а искомое dateFrom может равняться 22/06/2007.

есть идеи?
 
H

Hedg

#4
Ипользовать разницу дат, она же в секунадах , диапазон у тебя есть, вот и вычитай, а результат сравнивай с верхней и нижней границей, если в её пределах, значит дата подходит
 
D

Domino6

#6
Перевести дату в число и обрабатывать

Код:
dtnumbegin=cdbl(dt)
обратно cdat()
 
B

Blacky

#7
Всем доброго времени суток.
Раньше админил сервак Domino, сейчас побую написать БД для фирмы.
Мучаюсь над вопросом отбора документов за задаваемый период, уже дня 3.

На данный момент имеется форма с полями from и to (формат Date/Time), задаются ползователем. В ней же создана Embedded View, в которой хотелось бы видеть результат отбора документов.

Во вьюхе отбор документов определяется по формуле:
SELECT @If(razn<(@Date(@Today)-@Date(from));@True;razn>(@Date(@Today)-@Date(to));@True;@False)
, где razn - есть разница между @Today и одним из полей в документе.

Осталась одна проблема, знаний не хватает, для осуществления переноса введённых данных из полей from и to, в формулу.

Буду очень признателен за помощь.
Спасибо.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#8
Для: Blacky
Неправильный подход.
Смотри в сторону отбора документов в (личную) папку.
 
B

Blacky

#9
<!--QuoteBegin-Medevic+4:07:2007, 16:34 -->
<span class="vbquote">(Medevic @ 4:07:2007, 16:34 )</span><!--QuoteEBegin-->Неправильный подход.
[snapback]71344" rel="nofollow" target="_blank[/snapback]​
[/quote]
А в чём именно неправильный? небудет работать или что?

<!--QuoteBegin-Medevic+4:07:2007, 16:34 -->
<span class="vbquote">(Medevic @ 4:07:2007, 16:34 )</span><!--QuoteEBegin-->Смотри в сторону отбора документов в (личную) папку.
[snapback]71344" rel="nofollow" target="_blank[/snapback]​
[/quote]
А поподробнее мжно? :D
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#10
<!--QuoteBegin-Blacky+4:07:2007, 16:46 -->
<span class="vbquote">(Blacky @ 4:07:2007, 16:46 )</span><!--QuoteEBegin-->А в чём именно неправильный? небудет работать или что?
[snapback]71346" rel="nofollow" target="_blank[/snapback]​
[/quote]
Сама идея неправильная. Ты хочешь менять формулу отбора. В общем представлении. В результате у всех пользователей будет отображаться одинаковая информация. А личные представления использовать не получится. Точнее изменить формулу отбору в них.

<!--QuoteBegin-Blacky+4:07:2007, 16:46 -->
<span class="vbquote">(Blacky @ 4:07:2007, 16:46 )</span><!--QuoteEBegin-->А поподробнее мжно?
[snapback]71346" rel="nofollow" target="_blank[/snapback]​
[/quote]
Самое простое notesDatabase.Search. Медленно, но просто. :D
Потом notesDocumentCollection.PutAllInFolder в личную папку.
 

GROMILA

Well-known member
08.04.2004
297
0
#11
По поводу личных папок.
С ними ждем трахач после изменения дизайна.
Задолбаешься самостийно удалять у пользователей.

Лично я не вижу нормального решения :) в том виде, который нужен.
Ны наступил на один из мозолей лотуса.

Подобные извраты с предпросмотром лучше перепроектировать, ущемив пользовательское юзабилити.
Например:
- заставить ждать пока все не выпихнешь в Excel :)
- заставить ползать по категоризированному по датам предсталвению
- заставить ползать по сортированному представлению с возможностью поиска