二分的幾種方法

2021-08-14 23:18:57 字數 1071 閱讀 4493

64種。

對其進行分類:

向下取整 向上取整 (共2種)

** 閉區間 左閉右開區間 左開右閉區間 開區間 (共4種)

**對於不下降序列a,求最小的i,使得a[i] = key

對於不下降序列a,求最大的i,使得a[i] = key

對於不下降序列a,求最小的i,使得a[i] > key

對於不下降序列a,求最大的i,使得a[i] < key

對於不上公升序列a,求最小的i,使得a[i] = key

對於不上公升序列a,求最大的i,使得a[i] = key

對於不上公升序列a,求最小的i,使得a[i] < key

對於不上公升序列a,求最大的i,使得a[i] > key**

(共8種)綜上所述,二分查詢共有 2 * 4 * 8 = 64 種寫法。

對於不下降序列的,四種分類寫出**如下:

//   a2 >= a1,    min  i   a[i] = key;

int binary_search_1(int a, int n, int key)

if(a[e] == key) return e;

return -1;

}// a2 >= a1, max i , a[i] = key

int binary_search_2(int a, int n, int key)

if(a[s] == key) return s;

return -1;

}//a2 >= a1, min i, a[i] > key

int binary_search_3(int a, int n, int key)

if(a[e] > key) return e;

return -1;

}// a2 >= a1, max i, a[i] < key

int binary_search_4(int a, int n, int key)

if(a[s] < key) return s;

return -1;

}

了解跟多

java中的二分法查詢的幾種方法

定義乙個用折半查詢法查詢陣列中元素的方法 public static int bisearch int arr,int key else if arr mid min mid 1 else return 1 折半查詢,但是必須要保證該陣列是有序的陣列。public static int halfse...

二分入門 二分知識 及 幾種情況

二分排序 時間複雜度是 log n 最壞的情況下是 n 乙個條件是帶查詢陣列是有序的,分兩種 一公升序 而降序 主要思路就是指定兩個指標start end 分別指向陣列元素的兩端,然後比較陣列中間的arrat mid 和待查詢元素,n 直接找到某值在右若干個 n時 找n 以下是 若找到中間值是n則輸...

關於幾種二分的想法

一般的二分能解決在單調序列中查詢某個數是否存在的作用,假如查詢的某數有多個,我要你輸出第乙個的位置,或者最後乙個的位置,其實這些問題也能用而二分解決。c 中貌似自帶lower bound 和upper bound函式,分別是在單調有序的序列中,找到第乙個大於給定值和第乙個大於等於給定值的數的位置,但...