演算法導論 2 3 7

2022-08-22 14:24:09 字數 589 閱讀 3030

問題:給定n個整數的集合s和另乙個整數x,描述乙個執行時間為o(log n)的演算法,該演算法能夠確定s中是否存在兩個其和剛好為x的元素

演算法描述:

1、先將集合中元素排序在陣列a中

2、對於集合中的每乙個元素a[i],在排好序的陣列a中二分查詢 x-a[i]

3、查詢成功則存在,迴圈結束後查詢未成功則不存在

偽**:

1

sort( 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 這裡的演算...

演算法導論 隨機演算法

一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...