def?prime(n):
成都創(chuàng)新互聯(lián)公司專注于廣水企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站建設(shè)。廣水網(wǎng)站建設(shè)公司,為廣水等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
if?n=2:
return?[]
result=[False,False]+[True]*(n-2)
for?i?in?range(len(result)):
if?result[i]==True:
for?j?in?range(2*i,len(result),i):
result[j]=False
return?[i?for?i?in?range(len(result))?if?result[i]==True]
def?bi_search(prime,primelist,start,end):
if?startend?:
return?-1
mid=(start+end)//2
if?primelist[mid]==prime:
return?mid
elif?primelist[mid]prime:????????????????
end=mid-1
else:
start=mid+1
return?bi_search(prime,primelist,start,end)
if?__name__=='__main__':
n=int(raw_input())
primelist=prime(n)
num=raw_input()
while?num:
num=int(num)
index=bi_search(num,primelist,0,len(primelist)-1)
print(index)
num=raw_input()
要判斷一個list中是否存在你要的東西,可以用 value in list 的方式或者 list.index(value), 具體python內(nèi)部實現(xiàn)用的什么算法。。。自己研究吧。
二分查找: 又稱折半查找 ,輸入一個有序的元素列表(必須是有序的), 將列表中間位置記錄的元素與查找元素比較, 如果查找的元素包含在列表中, 則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的元素大于查找元素,則進一步查找前一子表,否則進一步查找后一子表,重復(fù)以上過程,直到找到滿足條件的記錄,使查找成功, 二分查找 返回其位置; 或直到子表不存在為止,此時查找不成功 ,返回None。
二分查找算法要求 : .必須是有序列表;
二分查找算法時間復(fù)雜度: O(log n)
二分查找算法優(yōu)點: 比較的次數(shù)少,查找速度快,平均性能好,占用系統(tǒng)內(nèi)存較少。
def binary_search(list,item):
low = 0
high = len(list) - 1
while low = high:
mid = int((low + high)/2) # 整除計算也可用 mid = (low + high)//2
guess = list[mid]
if guess == item:
return mid
if guess item:
low = mid + 1
else:
high = mid - 1
return None
my_list = [1,3,5,6,8,7,9,12,18,45]
print (binary_search(my_list,2))
print (binary_search(my_list,12))
分享名稱:二分查找函數(shù)python 二分查找函數(shù)c語言
瀏覽地址:http://chinadenli.net/article22/dogsjjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、外貿(mào)建站、網(wǎng)站收錄、手機網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)