二分法相關

2021-09-25 00:19:09 字數 1417 閱讀 5285

陣列有序

尋找目標數字x

int maxn =

110;

int a[maxn]

;int

binary

(int left,

int right,

int x)

return-1

;// 最終沒有找到相等

}

尋找第乙個大於等於數字x的數字"["

int

lower_bound

(int a,

int left,

int right,

int x)

return left;

}

尋找第乙個大於數字x的數字"("

int

upper_bound

(int a.

int left,

int right,

int x)

return left;

}

上述得出的位置-1即可得最後乙個等於數字x的數字位置

模板:尋找有序序列中第乙個滿足條件的元素位置

int

func

(int a.

int left,

int right,

int x)

return left;

}

拓展:

求√2

const

double eps =

1e-5

;doublef(

double x)

double

sqrt()

return mid;

}

求函式的根

const

double eps =

1e-5

;doublef(

double x)

double

sqrt

(double left,

double right)

return mid;

}

快速冪

typedef

long

long ll;

// a^b % m 遞迴法

ll binarypow

(ll a, ll b, ll m)

}// a^b % m 迭代法

ll pow

(ll a, ll b, ll m)

a = a * a % m;

b >>=1;

}return ans;

}

二分法相關

浮點數的二分 例題 題目描述 告訴你圓台的高h,下地面半徑r,和上底面半徑r 你需要平行於地面切割圓台,使切割後的圓台上下兩部分相等,輸出切割平面的高度h 切割平面與 上 底面的距離 輸入第一行乙個t表示t組資料,每組資料三個整數h,r,r t 10 1 r,r,h 100 輸出如題所述輸出乙個浮點...

二分法相關

如何去使用二分搜尋去有序陣列大於等於某個數的最左側位置 二分如何考慮?用中點值和target比較 如果是大於等於target 如果是小於target public class bsleft public static int bsleft int array,int target else retu...

二分法相關題目

一般用法 public intbinarysearch int nums,int key else if nums m key else return 1 二分法的時間複雜度為o logn 變種 例如在乙個有重複元素的陣列中查詢 key 的最左位置的實現如下 public intbinarysear...