問題:給定n個整數的集合s和另乙個整數x,描述乙個執行時間為o(log n)的演算法,該演算法能夠確定s中是否存在兩個其和剛好為x的元素
演算法描述:
1、先將集合中元素排序在陣列a中
2、對於集合中的每乙個元素a[i],在排好序的陣列a中二分查詢 x-a[i]
3、查詢成功則存在,迴圈結束後查詢未成功則不存在
偽**:
1sort( a )
2 n =a.length
3for i = 1
to n
4 ans = binarysearch( a, x-a[i], 1
, n )
5if ans !=notfound
6return
true
7return
false
演算法複雜度分析:
t(n) = log 1 + log 2 + log3 +....+logn = log ( n! ) = log ( sqrt(2*pi*n)* ( n/e ) ^n ) = o( n log n )
複雜度為o(logn)
演算法導論習題解答 2 3 7
2.3 7 請給出乙個執行為 nlgn 的演算法 偽碼 使之能在給定乙個由n 個整數構成的集合s 和另乙個整數x 時,判斷出s 中是否存在有兩個其和等於x 的元素。解 解題思路 先對集合s進行歸併排序,然後新建乙個陣列s1,使得s1 i x s i 再將兩個陣列並起來。如果在並的過程中發現有兩個元素...
演算法導論P23題目2 3 7
請給出乙個執行時間為o n lgn 的演算法,使之在給定乙個由n個整數構成的集合s和另乙個整數x時,判斷出s中是否存在有兩個其和等於x的元素。以下思路一 和 思路二來自 思路一 我們最容易想到的是o n2 的演算法,大致偽碼即 1 findx a,x 6 7 return false 8 這裡的演算...
演算法導論 隨機演算法
一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...