演算法(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
基礎排序演算法詳解與優化
文章儲存在github,網速不佳的朋友,請看 基礎排序演算法詳解與優化 或者 來我的技術小站 godbmw.com 常見的基礎排序有選擇排序 氣泡排序和插入排序。眾所周知,他們的時間複雜度是 o n n 但是,現在要重新認識一下基礎排序演算法,尤其是 插入排序 在近乎有序的情況下,插入排序的時間複雜...
基礎排序演算法詳解與優化
文章儲存在github,網速不佳的朋友,請看 基礎排序演算法詳解與優化 或者 來我的技術小站 godbmw.com 常見的基礎排序有選擇排序 氣泡排序和插入排序。眾所周知,他們的時間複雜度是 o n n 但是,現在要重新認識一下基礎排序演算法,尤其是 插入排序 在近乎有序的情況下,插入排序的時間複雜...
基礎排序演算法詳解與優化
文章儲存在github,網速不佳的朋友,請看 基礎排序演算法詳解與優化 或者 來我的技術小站 godbmw.com 常見的基礎排序有選擇排序 氣泡排序和插入排序。眾所周知,他們的時間複雜度是 o n n 但是,現在要重新認識一下基礎排序演算法,尤其是 插入排序 在近乎有序的情況下,插入排序的時間複雜...