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

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

oshmianski

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

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

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

посоветуйте, плс, алгоритм.
если приложите код, буду безмерно благодарен.
 
E

European

Так как список отсортирован, то наиболее быстры способом поиска будет бинарный (двоичный) поиск. Вот описание алгоритма с псевдокодом
 
O

oshmianski

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

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

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

есть идеи?
 
H

Hedg

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
На том же сайте есть .
 
D

Domino6

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

Код:
dtnumbegin=cdbl(dt)

обратно cdat()
 
B

Blacky

Всем доброго времени суток.
Раньше админил сервак 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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: Blacky
Неправильный подход.
Смотри в сторону отбора документов в (личную) папку.
 
B

Blacky

<!--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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--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 в личную папку.
 
G

GROMILA

По поводу личных папок.
С ними ждем трахач после изменения дизайна.
Задолбаешься самостийно удалять у пользователей.

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!