![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Можно ли лаконичнее записать следующий код:
Код:
Код:
Последний раз редактировалось SkAndrew; 18.04.2010 в 00:45. |
![]() |
![]() |
![]() |
#2 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
![]() Код:
Перемешивай дело с бездельем и не сойдешь с ума...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо, но так :
Код:
Спасибо |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
![]()
Функцию напиши:
function IsValueIn(Value: DWORD; Values: array of DWORD): Boolean; Вызывать так: if IsValueIn(Value, [$6eaa3f, $75bc8d, $6abdc2, $69aca4, $4f978e]) then А первоначальный вариант не прокатит. Элементы множества не должны выходить за пределы типа Byte |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо за ответ.
Такой код оптимальный или есть иное решение подобной функции: Код:
Спасибо. Последний раз редактировалось SkAndrew; 19.04.2010 в 10:34. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Какая из приведенных ниже функций быстрее или есть еще какое-нибудь решение?
Код:
|
![]() |
![]() |
![]() |
#7 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Среди скольких значений тебе нужно проверять? Если их только пять или десять, как ты привел в примере выше, то напиши элементарные проверки с if. А если возможных значений много и нужно быстро, тогда деревья спасут положение. Почитай про бинарное дерево поиска.
Вобщем опиши подробнее что тебе надо, а мы посоветуем лучший способ.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
я понимаю, что бинарный поиск самый быстрый, но он только отсортированном списке работает. а я могу добавлять в множество значения произвольным числом и не по порядку (не сортировано). Может я что-то не понял в Вашем ответе? Спасибо.
|
![]() |
![]() |
![]() |
#9 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]() Цитата:
Если элементов у вас около тысячи не стоит ради этого деревья городить, тут подойдет и простой перебор в цикле. Дерево любит пространство ) Тут еще посмотрите http://www.programmersforum.ru/showthread.php?t=91215
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 19.04.2010 в 16:44. |
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
![]()
SkAndrew, не лови блох. Если у тебя не тысячи элементов, а раз ты их все вручную при вызове функции перечисляешь, то у тебя их не тысячи, то ничего быстрее перебора в цикле ты не придумаешь а главное - для этого нет смысла. У тебя программа из-за цикла жутко тормозит? Или ты считаешь что цикл из 5-ти итерации будет выполняться долго, а проверка if-ом пяти выражений, объединенных and-ом быстро? Открою секрет: если не считать блох, то время выполнение и того и другого примерно одинаково - и там и там 5 сравнений.
Не зацикливайся на мелочах, преждевременная оптимизация - зло, которое губит многих программистов и многие программные продукты. Человекочасы стоят гораздо дороже, чем незаметная глазу разница в эффективности. Вот если у тебя программа начнет тормозить и твои тесты покажут, что этот цикл - узкое место (а все остальное оптимально) - тогда и спроси "а как сделать быстрее?". Но как показывает практика, в 95% случаев программа и так работает быстро, а из оставшихся пяти процентов 99% что узкое место будет не здесь и оптимизировав его можно выиграть 1000% производительности, а оптимизировав маленький цикл - 2-5%. Вот такая арифметика, если любишь считать ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перечисляемые и ограниченные типы. Оператор варианта. Символьный тип. | Alex_Gray | Помощь студентам | 2 | 14.12.2009 16:45 |
Типы | Skrip | Общие вопросы C/C++ | 5 | 14.06.2009 19:24 |
Ссылочные типы | senchakv | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 13.06.2009 21:50 |