算法基础:二分查找/折半查找
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 算法基础:二分查找/折半查找
def binarySearch(dataSource, find_n):
mid = int(len(dataSource) / 2)
if len(dataSource) >= 1:
if dataSource[mid] > find_n:
print("data in left of [%s]" % (dataSource[mid]))
binarySearch(dataSource[:mid], find_n)
elif dataSource[mid] < find_n:
print("data in right of [%s]" % (dataSource[mid]))
binarySearch(dataSource[mid:], find_n)
else:
print("find data is : [%s]" % (dataSource[mid]))
else:
print("not find data ...")
以上代码运行结果:
3333
data in left of [4999]
data in right of [2500]
data in right of [3748]
data in right of [4372]
data in right of [4684]
data in right of [4840]
data in right of [4918]
data in right of [4957]
data in right of [4978]
data in right of [4987]
data in right of [4993]
find data is : [4996]
------------------------
data in right of [4999]
data in left of [7498]
data in left of [6247]
data in left of [5623]
data in left of [5311]
data in left of [5155]
data in left of [5077]
data in left of [5038]
data in left of [5017]
data in left of [5008]
data in left of [5002]
not find data ...