二分法細微差異與變種

2021-10-07 04:38:04 字數 513 閱讀 5319

二分法是一種對於有序數列查詢時間複雜度為o(logn)的方法。

最常用的方法是找出該數列中是否含有某乙個數字,有則返回其位索引,沒有則退出返回-1

while(l<=r)

if (arr[mid]note 1:如果行1 (l <= r) 改為 (l不要在找到時停止,直到遍歷到第乙個索引位或最後乙個索引位,同時如果不存在該數字,則返回不大於該數字的最大元素的索引

int realtwosplit(vectorarr, int target, int l_flag)

else

} if (l_flag)

else

return l;

}

note 2:l_flag作為控制第一索引位的flag

二分法的變種

二分法查詢使用的前提是一串資料必須是有序的 遞增或遞減 時間複雜度是o lgn 查詢速度特別快 但是對於這樣一串資料4 5 6 1 2 3,前一部分是遞增,後一部分也是遞增,這樣一串資料怎麼去使用二分法查詢呢?把乙個陣列最開始的若干個元素搬到陣列的末尾,稱之為陣列的旋轉。上面的 4 5 6 1 2 ...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...