两种方法实现Python二分查找算法
一.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
arr = [ 1 , 3 , 6 , 9 , 10 , 20 , 30 ]
def findnumber(l,h,number):
mid = (l + h) / / 2
if arr[mid] = = number:
print ( "找到了" + str (mid))
elif arr[mid]<number:
l = mid
return findnumber(mid + 1 ,h,number)
elif arr[mid]>number:
h = mid
return findnumber( 0 ,mid - 1 ,number)
else :
print ( "没有找到" )
findnumber( 0 , len (arr) - 1 , 10 )
|
二.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
def binary_search(data_source,find_n):
#取中位数
mid = int ( len (data_source) / 2 )
if len (data_source)> = 1 :
if data_source[mid]>find_n: #中位数大于要查找的数,则要查找的数在左半部分,继续调用二分算法进行查找
binary_search(data_source[:mid],find_n)
elif data_source[mid]<find_n: #中位数小于要查找的数,则要查找的数在右半部分
binary_search(data_source[mid:],find_n)
else : #中位数等于要查找的数
print ( "找到了:" ,data_source[mid])
else :
print ( "没有找到" )
data = list ( range ( 1 , 100000 ))
binary_search(data, 88888 )
|