В какой диапазон попало число #770038


#0 by Anttonnio
Добрый день! Чисто технический вопрос: У меня есть несколько диапазонов чисел Допустим от 1 до 28 От 29 до 104 От 105 до 280 И т.д(таких диапазонов 20) Можно ли как-то быстро понять в каком диапазоне число? Чем Если че<=28 и че>=1 тогда Дыдва И т.д.
#1 by Cyberhawk
Беги из центральной границы диапазонов в какую-то сторону
#2 by Cyberhawk
И дели пополам каждый из оставшихся, далее снова от середины беги
#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
Ага) ну ясно из разряда быстрой сортировки) Еще думал вычислить изначально вероятность попадания в конкретный диапазон и по мере убывания вероятности - будет ли это быстрее предложенного?
#7 by Карупян
можно методом деления пополам
#8 by Карупян
но для 20 нет смысла заморачиваться
#9 by Cyberhawk
Как вычислять вероятность, по длине даипазона? Насчет "быстрее" - нужно сравнивать на большом числе итераций поиска
#10 by Anttonnio
ну т.е. Я примерно знаю в какой диапазон попадает чаще, а в какой реже - в таком порядке и выстроить?
#11 by Карупян
Ну можно проверить предполагаемый диапазон, а потом методом деления пополам
#12 by Anttonnio
А если упростить задачу - отсортировать таблицу чисел и тогда мы точно будем знать в каком диапазоне было предыдущее число, следовательно текущее может быть ли в текущем либо в одном из следующих?
#13 by Cyberhawk
Сортировка тоже стОит времени :)
#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!
#16 by mistеr
Если чисел много и они в базе, то диапазоны тоже в базу и джойнить.
#17 by PR пять
О чем вы вообще трындите, массивов всего 20 штук. Ни. О. Чем. Если ИначеЕсли Иначе КонецЕсли Без вариантов.
#18 by Anttonnio
Ясно!) Спасиоб всем за комментарии
#19 by FIXXXL
загони в ВТ и запросом получи, без всяких если
#20 by Тролль главный
+
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С