演算法基礎與排序

2022-05-26 13:12:11 字數 2090 閱讀 3734

演算法(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 但是,現在要重新認識一下基礎排序演算法,尤其是 插入排序 在近乎有序的情況下,插入排序的時間複雜...