sqrt函式實現 二叉搜尋

2021-08-03 17:08:24 字數 1146 閱讀 1950

知識點:

1、這道題目用搜尋的辦法求解sqrt函式,對於複雜的函式均可以用搜尋的方式實現。(前提是得到整數解,因為不是整數解無法遍歷)

2、對資料邊界的考慮,在計算中,盡量不要用乘法。比如要考慮 a*b  和 x的比較關係,轉化為a和x/b的比較,這樣做避免了a*b可能產生的整數溢位問題。與此同時,產生了新的問題:b必然不能等於0,這個要稍加注意;x/b也會存在向下取整的問題。

3、二叉搜尋中乙個很重要的函式,rank(int key)

rank(int key)用於搜尋,給定的鍵值key是否存在在陣列中,如果存在則返回下標,如果不存在,返回該值應該插入的位置。這一性質很重要。下面的這個實現,避免了遞迴,只是迴圈。

對rank()函式的進一步思考:

如果陣列中存在與關鍵值匹配的內容,一定會在while迴圈裡面執行「else return mid;」;如果沒有滿足,因為 i<=j 條件不滿足跳出了迴圈,那麼對於跳出的值 i,j,其判斷語句

if (data[mid] > key) j = mid - 1;

else if (data[mid] < key) i = mid + 1;

均是不滿足的,也就是

data[j]<= key

data[i]>= key

int data[len] = ;//公升序

int rank(int k)

return i;

}

題目:

implement int sqrt(int x).

compute and return the square root of x.

class solution {

public:

int mysqrt(int x) {

if(x==0) return 0;

int i=1;

int j=x;

int mid;

while(i<=j)

{mid=(j-i)/2+i;

if(mid>x/mid) j=mid-1;

else if(mid

Python實現二叉搜尋

二叉搜尋是在乙個有序的列表中,尋找目標元素。因此我們需要對半查詢即可。當目標元素比中間元素小,則在中間元素的左邊查詢 反之,則在目標元素的右邊查詢。直到左邊界比右邊界還要大停止查詢。def binarysearch target,arr right len arr 1 left 0 while le...

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

程式實現sqrt 函式

題意描述 寫乙個程式實現sqrt 函式 解題分析 平時用習慣了庫orapi,突然讓寫乙個sqrt 函式,不免要思考一下。以下給出兩種常見的解題思路 方法一 二分法。以sqrt 3 為例,運算過程是這樣的,任取乙個初始值,比如這裡取0,則有以下運算過程 0 3 2 1.5 1.5 1.5 3 1.5 ...