对python这种高级语言感兴趣的伙伴,可以和编程之家jb51.cc的编辑一起打一巴掌。
二分法检索介绍
二分法检索(binary search )又称折半检索,二分法检索的基本思想是按照词典中要素从小到大的顺序存储在数组(array )中。
首先,将给定值key与词典中间位置的要素的关键码(key )进行比较,如果相等则检索成功;
否则,key小时,在词典前半部分继续二分法检索;
如果key较大,则在词典后半部分继续二分法检索。
这样,比较一次就将检索区间缩小一半,并这样进行直到检索成功或检索失败。
偶数个以中间2个中任意一个为中间元素
二分法检索是一种高效的检索方法,需要按顺序表按键码顺序对词典进行排序。
代码示例:
# @param二分法检索介绍及实例详情
# @author编程大棚jb51.cc|jb51.cc
#! /usr/bin/env python
导入系统
分布式搜索(haystack,needle ) :
low=0
High=Len(HayStack )- 1
wile(low=high ) :
mid=(低高)/2
midval=haystack[mid]
if midval needle:
low=mid 1
elif midval needle:
high=mid - 1
else:
打印mid
返回mid
打印1
返回- 1
if __name__=='__main__':
Haystack=[int(I ) forIinlist(sys.argv[1]]
(Needle=int(sys.argv[2] ) ) ) ) ) ) ) ) )。
二进制搜索(堆栈,新建) )。
# End www.jb51.cc
执行:
python @ 512 pic :~$ pythonbinarysearch.py 123456789
3
# End www.jb51.cc
备注:
1.'__':python的所有类成员都是公共发布的、可访问的公共的,因此缺少像正统的面向对象语言那样的专用私有属性。
于是用__忍耐,模拟私人属性。 这些__属性经常在内部使用,并且通常可以不重写。 也不需要读取。
加下划线的目的是不与一般公开属性重复,也不允许对象用户(非开发者)自由使用。
2.__name__=='__main__ '表示程序脚本已直接执行。
如果不等于,则表示脚本是由其他程序在import中引入的。 其__name__属性被设置为模块名称