Уведомления

Группа в Telegram: @pythonsu

#1 Июль 2, 2014 13:24:45

Aris_P@
От:
Зарегистрирован: 2010-07-24
Сообщения: 46
Репутация: +  2  -
Профиль   Отправить e-mail  

найти ближайшее число, меньше заданного, в списке

че то такое видится

def f(n, arr):
	if n<=arr[0]:
		return None
	i, j = 0, len(arr)
	while (j-i)>1:
		c = (j-i)/2
		if arr[i+c]<n: i += c
		else: j -= c
	return arr[i]



Офлайн

#2 Июль 2, 2014 14:22:40

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

найти ближайшее число, меньше заданного, в списке

Есть ли смысл повторять то, что уже есть в библиотеке?

def bisect_right(a, x, lo=0, hi=None):
    if lo < 0:
        raise ValueError('lo must be non-negative')
    if hi is None:
        hi = len(a)
    while lo < hi:
        mid = (lo+hi)//2
        if x < a[mid]: hi = mid
        else: lo = mid+1
    return lo

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version