算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
排序算法:
二分查找算法:
python demp:
#coding:utf-8
"""
python2.7
"""
def mysort(list):
"""demo函数:从小到大排序函数"""
list_len=len(list)
for i in range(0,list_len):
min_value=list[i]
min_index=i
if i+1==list_len:#最后一个,退出排序
break
for j in range(i+1,list_len):
if list[j]<min_value:
min_index=j
min_value=list[j]
pass
pass
if min_index != i:
list[min_index],list[i]=list[i],list[min_index]
pass
pass
"""
算法(Algorithm)
对一定规范的输入,在有限时间内获得所要求的输出
https://baike.baidu.com/item/%E7%AE%97%E6%B3%95/209025?fr=aladdin
"""
def binary_search(data_list, val):
"""二分查找算法,又叫折半查找"""
low = 0 # 最小数下标
high = len(data_list) - 1 # 最大数下标
while low <= high:
mid = (low + high) // 2 # 中间数下标,取整
if data_list[mid] == val: # 如果中间数下标等于val, 返回
return mid
elif data_list[mid] > val: # 如果val在中间数左边, 移动high下标
high = mid - 1
else: # 如果val在中间数右边, 移动low下标
low = mid + 1
return # val不存在, 返回None
def main():
print("……demo:排序函数……".decode("utf-8"))
a=[14,26,23,100,88,40,120,70]
mysort(a)
print(a)
#return
print("
……demo:二分查找函数……".decode("utf-8"))
a.extend([150,190])
print(a)
tofind=60
data_index_finded = binary_search(a, tofind)
print("tofind:{},data_index_finded:{}".format(tofind,data_index_finded))
tofind=120
data_index_finded = binary_search(a, tofind)
print("tofind:{},data_index_finded:{}".format(tofind,data_index_finded))
tofind=88
data_index_finded = binary_search(a, tofind)
print("tofind:{},data_index_finded:{}".format(tofind,data_index_finded))
tofind=26
data_index_finded = binary_search(a, tofind)
print("tofind:{},data_index_finded:{}".format(tofind,data_index_finded))
pass
main()