Python語言由于其簡潔明了和強大的庫支持,如今已經成為了當下最流行的編程語言之一。本文將介紹Python中的一些典型算法例子,以便讀者更好地理解Python的算法應用。
# 1. 二分查找算法 def binary_search(arr, l, r, x): if r >= l: mid = l + (r - l) // 2 if arr[mid] == x: return mid elif arr[mid] >x: return binary_search(arr, l, mid-1, x) else: return binary_search(arr, mid + 1, r, x) else: return -1 # 測試數據 arr = [ 2, 3, 4, 10, 40 ] x = 10 result = binary_search(arr, 0, len(arr)-1, x) if result != -1: print ("元素在數組中的索引為 % d" % result) else: print ("元素不在數組中")
以上代碼為二分查找算法的Python實現,通過遞歸方式將數組一分為二,然后在對比中位數和目標值,從而不斷縮小查找范圍。這種算法的時間復雜度是log(N)。
# 2. 快速排序算法 def quick_sort(arr): if len(arr)<= 1: return arr else: pivot = arr[0] less = [i for i in arr[1:] if i<= pivot] greater = [i for i in arr[1:] if i >pivot] return quick_sort(less) + [pivot] + quick_sort(greater) # 測試數據 arr = [10, 2, 9, 4, 3, 6] print("原始數據:", arr) result = quick_sort(arr) print("排序結果:", result)
利用遞歸思想,快速排序借助一個基準值將數組分成兩部分,分別對兩個部分進行遞歸排序,再合并即可得到有序數組。由于快速排序是不穩定的排序算法,其時間復雜度為O(NlogN)。
# 3. 動態規劃算法 def dynamic_programming(target, nums): dp = [0] * (target + 1) dp[0] = 1 for num in nums: for i in range(num, target + 1): dp[i] += dp[i - num] return dp[target] # 測試數據 target = 5 nums = [1,2,5] result = dynamic_programming(target, nums) print("結果:", result)
動態規劃算法是一種優化遞歸算法的思想,通過表格記錄以往計算結果,將遞歸轉化為迭代,從而大大提高了算法的效率。以上為動態規劃算法的一個例子,在背包問題中,動態規劃算法用于求出能夠湊出目標數的方案數,其時間復雜度為O(N * target)。
上一篇php mechat
下一篇css圖片可以縮放嗎