找一對數 二分法

2021-09-30 18:17:05 字數 437 閱讀 4175

輸入n(n<=1000)個整數,找出其中的兩個數,他們之和等於整數m(假定肯定有解)。題中所有整數都能用int表示

解法1:

用兩重迴圈,列舉所有的取數方法,複雜度是o(n^2)的。

for(int i=0;i解法2:

(1)將陣列排序,複雜度是o(nlog(n))

(2)對陣列的每個元素a[i],在陣列中二分查詢m-a[i],看能否找到。複雜度log(n),

最壞要查詢n-2次,所以查詢這部分複雜度也是o(nlog(n))

解法3:

(1)將陣列排序,複雜度是o(nlog(n))

(2)查詢的時候,設定兩個變數i和j,i的初值是0,j的初值是n-1。看a[i]+a[j],

如果大於m,就讓j減1,如果小於m,就讓i加1,直至a[i]+a[j]=m.

這種解法的總的複雜度是o(nlog(n))的。

二分法找數字

二分法找數字 首先我們應該了解什麼是二分法,二分法是指對於區間 a,b 上連續不斷且f f 0的函式y f,通過不斷地把函式f的零點所在的區間一分為二,使區間的兩個端點逐步逼近所求值,進而找到所求值。要完成這個操作,系統再找到之前都要不斷查詢,我們並不知道要迴圈的次數,所以我選擇用while迴圈,最...

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 ...