# 2.2分析演算法練習題 python描述# 2.2-1
# θ(n^3)
# 2.2-2
a = [99
, 38
, 65
, 97
, 76
, 13
, 27
, 49]
# 排序過程
# a = [13, 38, 65, 97, 76, 99, 27, 49]
# a = [13, 27, 65, 97, 76, 99, 38, 49]
# a = [13, 27, 38, 97, 76, 99, 65, 49]
# a = [13, 27, 38, 49, 76, 99, 65, 97]
# a = [13, 27, 38, 49, 65, 99, 76, 97]
# a = [13, 27, 38, 49, 65, 76, 99, 97]
# a = [13, 27, 38, 49, 65, 76, 97, 99]
def
selectsort(a):
length = len(a)
for i in
range(0
, length - 1):
min = i
for j in
range(i + 1
, length):
if a[j] < a[min]:
min = j
temp = a[min]
a[min] = a[i]
a[i] = temp
selectsort(a)
print(a)
# θ(n^2)
#2.2-3
# 假設每個條目都有概率p為元素所尋找的。 然後,如果前面的k-1個位置不是被查詢的元素,那麼我們將只檢查k個元素,
# 而第k個位置是所需的值。 考慮到這種分布的預期值,我們可以得到它
#2.2-4
# 對於乙個好的最佳執行時間,修改演算法首先隨機產生輸出,然後檢查它是否滿足演算法的目標。 如果是這樣,產生這個輸出並停止。
# 否則,照常執行演算法。 這不太可能會成功,但在最好的情況下,執行時間只會與檢查解決方案一樣長。
# 例如,我們可以修改選擇排序,首先隨機排列a的元素,然後檢查它們是否按排序順序排列。 如果是,輸出a.否則按照慣例執行選擇排序。
# 在最好的情況下,這個修改的演算法將具有執行時間θ(n)。
演算法導論 練習題 3 2 4
首先證明f n 多項式有界的充分必要條件是lgf n o lgn 1 若存在常數c和n0,當n n0時,f n 則lg f n 根據上式容易證明,lg f n o lgn 2 若lg fn o lgn 則存在常數c和n0,當n n0,lg f n 所以f n 根據上面證明出來的公式,來證明兩個小題。...
演算法導論 練習題 7 4 5
快速排序遞迴樹到每個葉子為k個元素就結束了,所以高度h lg n k 每層代價cn,所以快速排序時間上限o nlgn 快速排序結束後,陣列變成 k個元素,a1,k個元素,a2.的形式 即每k個元素之後,都有乙個已經在正確位置上的元素,這些元素為a1,a2,其中ai之前的k個元素小於ai,ai之後的k...
演算法導論 練習2 2
2.2 1 只看最高次項,並忽略係數,時間複雜度為 n 3 2.2 2 def swap a,b return b,a defselect sort a n len a for i in range n 1 minindex i for j in range i 1 n if a j mininde...