BinarySearch的作用二分查找:二分查找适用于有序的数组或列表。如果列表和数组中有n个元素,通过二分查找查询一个元素的位置所需的步骤是log(n)(注意:log的底数是2);Python实现defbinary_search(list,item):low=0high=len(list)-1#python数组ID从0开始,区别于matlab,t=0whilelow<=high:t=t+1;mid=round((low+high)/2)guess=list[mid]ifguess==item:return(mid,t)ifguess>item:high=mid-1else:low=mid+1返回None#python关键字None,相当于matlab的NaNmy_list=range(1,101)value=binary_search(my_list,1)print("SearchNum:",value[1],'IndexPosition',value[0])运行后结果:SearchNum:6IndexPosition0注释Python定义的函数,使用if、while、for时,在语句';'后使用分号列表元素的索引从0开始;如果定义的函数有返回值,则返回值可以通过关键字'return'由函数输出,可以是多路输出。如果函数的返回值被调用,可以查询对应的返回值索引,找到需要的函数返回值;求中间索引位置时,防止查询出现调用时索引计算中出现小数,并通过round函数四舍五入;matlab实现函数[count,out]=binary_search(list,item)%list:待查找数组的一维行向量%item:查找元素low=1;高=长度(列表);t=0;而低<=高t=t+1;中=圆((低+高)/2);猜测=列表(1,中间);如果guess==itemout=mid;计数=t;休息;elseifguess>itemhigh=mid-1;如果高<低出='无';休息;结束else低=中+1;如果高<低出='无';休息;endendendend注意Matlab数组元素索引是从1开始的,这点和python不同;函数的返回值是在定义函数的时候直接定义的;
