#0
by Anttonnio
Добрый день! Чисто технический вопрос: У меня есть несколько диапазонов чисел Допустим от 1 до 28 От 29 до 104 От 105 до 280 И т.д(таких диапазонов 20) Можно ли как-то быстро понять в каком диапазоне число? Чем Если че<=28 и че>=1 тогда Дыдва И т.д.
#3
by GROOVY
Если диапазоны не вложенные, ИМХО, достаточно на иначеесли проверять границы в порядке убывания или возрастания. Ну собстно .
#4
by Cyberhawk
Допустим у тебя диапазоны 1-10 11-20 21-30 и т.д. до 91-100 Сравниваешь сначала х > 50, если да, то отсекаешь первую половину диапазона. В оставшейся половине 51-60 61-70 ... 91-100 сравниваешь опять с границей среднего диапазона (70 или 80) и отсекаешь опять
#5
by Cyberhawk
Можно и последовательно, как в , но итераций будет больше, если нужный диапазон находится в "дальней" половине
#6
by Anttonnio
Ага) ну ясно из разряда быстрой сортировки) Еще думал вычислить изначально вероятность попадания в конкретный диапазон и по мере убывания вероятности - будет ли это быстрее предложенного?
#9
by Cyberhawk
Как вычислять вероятность, по длине даипазона? Насчет "быстрее" - нужно сравнивать на большом числе итераций поиска
#10
by Anttonnio
ну т.е. Я примерно знаю в какой диапазон попадает чаще, а в какой реже - в таком порядке и выстроить?
#12
by Anttonnio
А если упростить задачу - отсортировать таблицу чисел и тогда мы точно будем знать в каком диапазоне было предыдущее число, следовательно текущее может быть ли в текущем либо в одном из следующих?
#14
by Anttonnio
сортировку можно и на уровне запроса сделать Что-то вроде: ТекДиапазон для каждого жи = 1 по 100 000 Цикл Если Че[жи]>ТекДиапазон.Максимум тогда КонецЕсли Конеццмкла
#15
by Два Волшебника
Если критична скорость - я бы сделал массив из диапазонов и смотрел, обращаясь по индексу. Либо в массив запихнуть структуры с минимальным и максимальным значением диапазона: Массив[0] - от 0 до 5 Массив[1] - от 0 до 5 Массив[2] - от 0 до 5 Массив[3] - от 0 до 5 Массив[4] - от 0 до 5 Массив[5] - от 0 до 5 Массив[6] - от 6 до 10 Массив[7] - от 6 до 10 Массив[8] - от 6 до 10 либо использовать два массива: МассивМин[0] = 0, МассивМакс[0] = 5 И вычислять ничего не надо! Profit!
#17
by PR пять
О чем вы вообще трындите, массивов всего 20 штук. Ни. О. Чем. Если ИначеЕсли Иначе КонецЕсли Без вариантов.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Вылазят ошибки скрипта Яндекс карты 2.1 в поле HTML
- Замена аппаратных ключей на программные. Стоимость...
- Чтение РС используя Odata
- NodeJS большие таблицы скроллинг. с динамической подгрузкой данных.
- Прослушать аудиофайл прям в 1С
- Ут11 - обособленные подразделения
- Работа с HTML документом в Управляемом приложении (УФ)
- В общем модуле не получается с клиента вызвать сервер, почему и как?
- Регистрация конфигурации в центре лицензирования не выполнена
- Получить макет управляемой формы
- Как скопировать строку таблицы БД на MySQL одним запросом?
- Ошибка при установке значения атрибута контекста (Данные)
- Нужно ли учитывать пособие по уходу за ребенком в строке 130 формы 6-НДФЛ?
- Как в такси 8.3 поместить обработку на форму главного меню слева.
- Администрирование серверов 1с предприятия
- v7: Проблема с установкой значения в строке ТЗ
- Договоры ГПХ ЗУП 3.0 - БП 3.0
- Как отразить доп расходы которые поступают раньше товара
- XSLT и передача параметров в шаблон
- Документооборот. Полное обновление прав. Слетели дескрипторы.