0.摘要
本文主要介绍二分查找法的基本原理,并使用python3进行实现。
1.二分查找法原理
算法要求:
- 数据采用顺序存储结构
- 必须按照关键字大小有序排列(升序或者降序)
数据以升序排列为例:
step1:将表中间位置的值与查找关键字比较,如果两者相等,则查找成功,返回中间位置;否则转step2
step2:利用中间位置,将表分成前、后两个子表;
如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表;否则进一步查找后一子表
step3:如果查找到目标关键字,则返回位置;否则,重复上述过程;
2.代码实现:
# !/usr/bin/env python
# coding=utf-8
import numpy as np
def BinarySearch(t, x):
t.sort() # 对列表进行排序,列表是有序的,是二分法的前提
low = 0;
high = len(t) - 1;
while low < high:
mid = (low + high) // 2;
if t[mid] < x:
low = mid + 1;
elif t[mid] > x:
high = mid - 1;
else:
return mid
a = np.random.randint(0,100,size=100).tolist()
print(a)
print(BinarySearch(a,a[10]))