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
的平方根,如果我們查詢的數x
比y
的平方根小,則x2
2>y,我們可以據此縮小查詢範圍,當我們查詢的數足夠準確時(比如滿足|x2-y|<0.001),就可以認為找到了y
的平方根。
//by lyltimdouble mysqrt(double y)
return (l + r) / 2;
}
3、編寫乙個函式double mypow(double x, int n);
求x
的n
次方,引數n
是正整數。最簡單的演算法是:
double product = 1;這個演算法的時間複雜度是θ(n)。其實有更好的辦法,比如for (i = 0; i < n; i++)
product *= x;
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...