算法(Algorithm):一个计算过程,解决问题的方法
程序等于数据结构加算法
数据结构表现在python中,就是列表,元组,字典和集合等,就是变量和对象等
程序的运行过程就是靠算法,一个函数就是一个算法
参数就是输入经过算法,
算法基础之递归
递归有两个特点:
调用自身
必须要有结束条件
例子一
def func1(x):
if x>0:
print("func1:",x)
func1(x-1)
def func2(x):
if x>0:
func2(x-1)
print("func2:",x)
输入结果:
func1: 5
func1: 4
func1: 3
func1: 2
func1: 1
func2: 1
func2: 2
func2: 3
func2: 4
func2: 5
递归之斐波那契数列
def fibo_func(x):
if x==1 or x==2:
print(1)
else:
return fibo_func(x-1) + fibo_func(x-2)
res=fibo_func(10)
算法基础之列表查找
列表查找:从列表中查找指定的元素
输入:列表,待查找元素
输出:元素下标或未查找到元素
顺序查找:从列表的第一个元素开始,顺序进行搜索,直到找到为止
l1=[5,7,4,6,3,1,2,9,8]
def liner_search(data_set,val):
for i in range(len(data_set)):
if data_set[i]==val:
return i
return
print(liner_search(l1,6))
二分查找
从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半
l1=[5,7,4,6,3,1,2,9,8]
def bin_search(data_set,val):
low=0
high=len(data_set)-1
while low <= high:
mid=(low+high)//2
if data_set[mid]==val:
return mid
elif data_set[mid] > val:
high=mid-1
else:
low=mid +1
return
print(bin_search(l1,3))
二分查找的递归版本
def bin_search_rec(data_set,val,low,high):
if low <= high:
mid=(low+high)//2
if data_set[mid] ==val:
return mid
elif data_set[mid] >val:
return bin_search_rec(data_set,val,low,mid-1)
else:
return bin_search_rec(data_set,val,mid+1,high)
else:
return