折半查詢習題解答

2022-06-04 15:15:10 字數 1329 閱讀 3025

1、本節的折半查詢演算法有乙個特點:如果待查詢的元素在陣列中有多個則返回其中任意乙個,以本節定義的陣列int a[8] = ;為例,如果呼叫binarysearch(2)則返回3,即a[3],而有些場合下要求這樣的查詢返回a[1],也就是說,如果待查詢的元素在陣列中有多個則返回第乙個。請修改折半查詢演算法實現這一特性。

//by lyltim

#include#define len 8

int a[len] = ;

int search(int k)

} return -1;}

int main(void)

2、編寫乙個函式double mysqrt(double y);y的正平方根,引數y是正實數。我們用折半查詢來找這個平方根,在從0到y之間必定有乙個取值是y的平方根,如果我們查詢的數xy的平方根小,則x2

2>y,我們可以據此縮小查詢範圍,當我們查詢的數足夠準確時(比如滿足|x2-y|<0.001),就可以認為找到了y的平方根。

//by lyltim

double mysqrt(double y)

return (l + r) / 2;

}

3、編寫乙個函式double mypow(double x, int n);xn次方,引數n是正整數。最簡單的演算法是:

double product = 1;

for (i = 0; i < n; i++)

product *= x;

這個演算法的時間複雜度是θ(n)。其實有更好的辦法,比如mypow(x, 8),第一次迴圈算出x·x=x2,第二次迴圈算出x2·x2=x4,第三次迴圈算出4·x4=x8。這樣只需要三次迴圈,時間複雜度是θ(lgn)。思考一下如果n不是2的整數次冪應該怎麼處理。

1

//遞迴版 by lyltim

2double mypow(double x, intn)3

13 }

1

//非遞迴版 by lyltim

2double mypow(double x, intn)9

return

s;10 }

LeetCode部分習題解答記錄 查詢

class solution for int i 0 i nums2.length i return arrays.copyofrange ans,0,index class solution for int i 0 i nums2.length i else return arrays.copyo...

1 7習題解答

根據自己的創作理念,結合市場調研得來的資料,參考開發人員的建議,在開發條件允許的基礎上,將遊戲創意以及遊戲內容和規則細化完整,形成策劃文件。同時,從設計遊戲大綱,發哦規劃所有細節重點,再到開發過程的全程協調與監控,都屬於工作範疇。1.喜歡玩遊戲,玩遊戲時有深度和廣度。自省 不是所有遊戲都喜歡,看型別...

SICP習題解答1 1 1 8

lang racket exercise 1.1 10 5 3 4 9 1 6 2 2 4 4 6 define a 3 define b a 1 a b a b a b if and b a b a b ba cond a 4 6 b 4 6 7 a else 25 2 if b a b a co...