考虑到以下列表,我想在python中实现二进制搜索算法:
Fibonacci_Seq = [1,1,2,3,5,8,13,21,34,55,89]
所以,我写了一个函数来进行计算,但是当我进入这段代码时,我不知道该怎么做:
min = Fibonacci_Seq[0] #is 1
max = Fibonacci_Seq[-1] #is 89
goal = Fibonacci_Seq[4] #Equals to 5
guess = (min+max)//2 #Equals to 45
if guess > goal: #Is true
(guess-1)//2 #Equals to 22
del Fibonacci_Seq[the elements that are less than 22]
代替“小于22的元素”,我可以写些什么来消除小于22的数字,因为放置基本的“ <=>”符号不起作用?
答案 0 :(得分:1)
进行修改的二进制搜索,以找到第一个大于或等于22的元素的索引,然后仅对现有列表进行切片。
在您的情况下,索引为8
,以使Fibonacci_Seq[8]=34
,然后将列表切为Fibonacci_Seq=Fibonacci_Seq[8:]
。
答案 1 :(得分:0)
您可以使用numpy:
ggplot(data=stack) +
geom_density(aes(x=OfferPrice, group=Country, fill=Country),
alpha=0.5, adjust=2) +
facet_grid(~Country, scales = "free_x") +
theme_bw()