pythonインプリメンテーション:二分検索を使用して、秩序配列の最後に表示される数値の下付き文字を検索します.
860 ワード
質問:
2分割ルックアップを使用して、秩序配列[2,2,3,3,3,4,5,5,6,6,7,8,8]のうち、数字3が最後に現れる下付き記号を検索します.
解析:
二分検索:まず配列の中間値とパラメータを取得して比較し、両者の値を判断し、条件に合致する半分のデータを切り取って新しい配列とし、再判断する......
コード:
2分割ルックアップを使用して、秩序配列[2,2,3,3,3,4,5,5,6,6,7,8,8]のうち、数字3が最後に現れる下付き記号を検索します.
解析:
二分検索:まず配列の中間値とパラメータを取得して比較し、両者の値を判断し、条件に合致する半分のデータを切り取って新しい配列とし、再判断する......
コード:
#coding:utf8
def binary_search(list,item):
if not list and not item:
print 'he'
return None
low = 0
high = len(list)-1
while low <= high:
mid = (low + high)/2
print 'low %d' % low
print 'high %d' % high
print 'mid %d' % mid
guess = list[mid]
print 'guess %s' % guess
if guess == item:
return seach(list,item,mid)
elif guess > item:
high = mid - 1
elif guess < item:
low = mid + 1
def seach(list,item,mid):
for k,v in enumerate(list[mid:]):
if v == item:
continue
else:
return k+mid
int1 = [2,2,3,3,3,4,5,5,6,6,7,8,8]
intItem = 3
a = binary_search(int1,intItem)