python中演算法 python中的一些演算法

2021-10-22 11:44:16 字數 1655 閱讀 7930

# 遞迴,尾遞迴

def fact(n):

return fact_iter(n, 1)

def fact_iter(num, product):

if num == 1:

return product

return fact_iter(num - 1, num * product)

#菲波列切數列

def fibo(n):

if n == 1 or n == 2:

return 1

else:

return fibo(n-1) + fibo(n-2)

#氣泡排序

tmp_list = [14,3,1,5,4,1.4,10]

for j in range(len(tmp_list)):

for i in range(len(tmp_list)-j-1):

if tmp_list[i]

tmp = tmp_list[i]

tmp_list[i] = tmp_list[i+1]

tmp_list[i + 1] = tmp

print(tmp_list)

#二分排序

def bin_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

ret = bin_search(list(range(1, 10)), 7)

#print(list(range(1, 10)))

# 選擇排序

def selectsort(list, order=1):

if not isinstance(order, int):

raise typeerror('order型別錯誤')

for i in range(len(list) - 1):

# 記錄最小位置

min_index = i

# 篩選出最小資料

for j in range(i + 1, len(list)):

if order == 1:

if list[j] < list[min_index]:

min_index = j

else:

if list[j] > list[min_index]:

min_index = j

# 交換位置

if min_index != i:

list[i], list[min_index] = list[min_index], list[i]

print(list)

selectsort([1, 4, 9, 6, 3, 100], 1)

python中演算法概述

python 包含很多模組,可以採用對任務最實用的方式精巧而簡潔地實現演算法。它支援不同的程式設計方式,包括純過程式,物件導向,函式式。這3種方式經常在同乙個程式的不同部分混合使用。functools包含的函式用於建立函式修飾符,啟用物件導向方面的程式設計以及傳統物件導向方法所以不能支援的 重用。它...

python中快速排序演算法

相比歸併排序來說快速排序在資料量小的情況下是不佔優勢的,因為快速排序的時間複雜度最好的情況下是n log n 但是在處理大量資料的時候歸併排序就不如時間排序了,因為在空間複雜度上面歸併排序消耗資源更多.所以我們可以做乙個判斷 如果列表長度小於某個數值的時候走if分支 而大於某個值的時候走else分支...

python 實現演算法 Python實現演算法 一

1.二分查詢 def binary search mylist,item low 0 high len mylist 1 while low high mid low high 2 如果 low high 2不是偶數,python自動將mid向下圓整。guess mylist mid if gues...