d&c的意思是分而治之,它是一種著名的遞迴式問題解決方法。
使用d&c來解決問題的過程包括兩個步驟:
(1) 找出基線條件,這種條件必須盡可能簡單
(2) 不斷將問題分解(或者說縮小規模),直到符合基線條件
求列表[2,4,6]的和
(1) 找出基線條件。列表中不包含元素
(2) 縮小問題規模。將求列表[2,4,6]的和轉化為任意取出乙個元素[2]與剩餘列表[4,6]的和
def sum(list):
if list==:
return 0
else:
return list[0]+sum(list[1:])
print(sum([2,4,6]))
#run->12
快速排序是一種常用的排序演算法,比選擇排序快得多。快速排序也使用了d&c。
對於快速排序一樣要找到基線條件,列表為空或者包含乙個元素。
對列表[3,5,2,1,4]進行快速排序
# 快速排序
def qiucklysort(list):
if len(list)<2:
return list
else:
base=list[0]
maxlist=[i for i in list if i > base]
minlist=[i for i in list if i < base]
return qiucklysort(minlist) + [base] + qiucklysort(maxlist)
print(qiucklysort([10, 5, 2, 3]))
# run->[2, 3, 5, 10]
D C與快速排序 Python實現
我們曾經在證明歐幾里得演算法的正確性時提出過乙個可以抽象並用歐幾里得演算法解決的問題 分土地的問題。現在,我們從乙個更加直觀的角度來看看如何解決這個問題。在拿到一塊1680 640的土地時,我們想要把它平均劃分成正方形,並且試圖保證正方形面積最大。我們首先將土地劃分出最大的正方形,可以畫出兩塊640...
DC 5 選擇排序與氣泡排序
include define n 10 int main int i,j int tmp 外層控制比較的輪數 for i 0 i n 1 i for i 0 i n i return 0 以上為氣泡排序,需要理解得是外層迴圈控制每次的冒泡,內層將剩下的進行冒泡。include define n 10...
快速排序與隨機快速排序
實現對陣列的普通快速排序與隨機快速排序。1 實現上述兩個演算法 2 統計演算法的執行時間 3 分析效能差異,作出總結 一 快速排序 通過使用分治思想對快速排序演算法進行描述。下面對乙個典型的子陣列a p r 進行快速排序的三步分治過程 分解 陣列a p r 被劃分為兩個 可能為空 子陣列a p q ...