最近上演算法導論課,說道分治法,回來想用python寫寫程式練練手,於是模仿一通寫了如下的**:
__author__ = 'day'
defarraymaxmin(array):
return
max(array)
defsort(init_array):
if len(init_array) <= 2:
(arraymaxmin(init_array))
else
: init_array=[init_array[i:i+2] for i in range(0,len(init_array),2)]
max_init_array=
for array in
init_array:
sort(max_init_array)
if__name__ == '
__main__':
array = [2,5,5,3,6,37,7,8]
sort(array)
方法實現了,可是現在問題來了。直接用max內建函式不是直接就解決問題了嗎,為什麼要使用分治法呢??
找中位數問題 分治法
題目 設a和b都是從小到大已經排好序的n個不等的整數構成的陣列,如果把a與b合併後的陣列記作c,設計乙個演算法找出c的中位數。解題思路 思路一 對將a和b合併數組成c,並且進行排序,然後直接輸出中位數。該演算法的時間複雜度為 o nlogn 空間複雜度為 o n 思路二 利用分治法。假定a 0,n ...
分治法找第K小的數PTA
分治法 找第k小的數 基本思路 用乙個基準數a 本題選用陣列的第乙個元素作為基準數 將s分割為兩部分,分別為小於等於a的s1和大於a的s2.記 s1 表示s1中元素的個數,s2 表示s2中元素的個數。這樣當 s1 k時,那麼第k小的數在s1中並且時s1中第k小的數 相反的,當 s1 define m...
使用分治法解最大連續子串行和問題
俺是菜鳥了解一下,這是我在演算法學習中的一些想法,如果有寫的不好的還請諒解,歡迎學習交流 3 問題 有長度為n的整數序列,求一段連續的子串行,要求該子串行的和為最大,並求出最大值。用分治法解決最大子串行和問題使用的是遞迴,它的思想是 1.將乙個長度為n的序列,一分為二變為兩個長度為n 2的子串行,繼...