pythonインプリメンテーション:二分検索を使用して、秩序配列の最後に表示される数値の下付き文字を検索します.

860 ワード

質問:
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)