![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверить integer на вхождение во множество
Tinky © (2009-08-31 13:45:00)Есть множество из 300 предопределенных констант (чисел).
Нужно написать функцию, которая будет возвращать результат типа boolean, говорящий о том, входит ли переданный параметр в это множество.
Набор чисел известный и постоянный (около 300 значений):
29001
29014
29020
...
25625
25626
29163
25666
Как это лучше всего (правильнее) сделать?
function IsInArray(value: integer): boolean;
begin
case value of
29001, 29014, ..., 29163, 25666: result := true;
else result := false;
end;
end;
Функция будет использоваться очень часто (сотни раз в минуту) и время выполнения критично.
Сергей М. (2009-08-31 14:22:00) [21]Чтобы
> работало быстро
надо из
> неупорядоченный набор чисел
сделать
> упорядоченный набор чисел
Впрочем на множестве из 300 чисел это ловля блох
Tinky (2009-08-31 14:10:00) [22]>Да, кстати, если диапазон чисел невелик, то TBits будет лучше, чем хэш-таблица.
От 10 до 30 тысяч.
Набор можно записать прямо в коде, список не подразумевает модифицирования...
MBo (2009-08-31 13:58:00) [23]Да, кстати, если диапазон чисел невелик, то TBits будет лучше, чем хэш-таблица.
Медвежонок Пятачок (2009-08-31 13:52:00) [24]не хотелось бы, но придется
Tinky (2009-08-31 13:50:00) [25]И конечно не хотелось бы писать:
result := (value = 29001) or (value = 29014) or ...;
MBo (2009-08-31 13:50:00) [26]Хэш-таблица.
Tinky (2009-08-31 13:49:00) [27]У меня постоянный предопределенный неупорядоченный набор чисел, поэтому скорее подходит название "множество" (необходимо реализовать логическую функцию "вхождение во множество"). Как записать этот набор в коде - роли не играет. Главное, чтобы работало быстро.
Медвежонок Пятачок (2009-08-31 13:47:00) [28]хотя множество отпадает сразу
Медвежонок Пятачок (2009-08-31 13:46:00) [29]ты бы определился для начала. множество или массив у тебя