y總和資料結構的 二分思想對比

2021-10-09 10:00:46 字數 1591 閱讀 4223

y總的整數二分思想:

ps:因為整數的除法是取整,所以會出現一些問題,

而如果是浮點數進行二分的話就不會存在這些問題。

分為兩種寫法:

ps:按照區間來劃分的話,如果能找到的話,那麼結果只有兩種可能,

第一種:

結果在左區間的右端點上

第二種:

結果在右區間的左端點上

1.key可能在右區間的左端點

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =5;

int a[n +1]

=;intb_search

(int key)

if(a[l]

!= key) l =-1

;return l;

}int

main()

cout << endl;

while(1

)return0;

}

2.key可能在左區間的右端點

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =5;

int a[n +1]

=;intb_search

(int key)

if(a[r]

!= key) r =-1

;return r;

}int

main()

cout << endl;

while(1

)return0;

}

二分的關鍵點是:

①找到乙個區間使得key在此區間內

②使得這個區間具有二段性:

這兩段中有且僅有一段存在key

key即為其中一段的邊界值

以下是兩種二分寫法的模板:

①l=m

/*

模板思路:

*/while

(l//key在右區間的左端點,即a[l],

//若a[l]==key;則找到 且l為下標。

//若不等的話,則不存在key

②r=m

/*

模板思路:

*/while

(l//key在左區間的右端點,即a[r],

//若a[r]==key;則找到 且r為下標。

//若不等的話,則不存在key

③資料結構的二分思想

while

(l<=r)

return-1

;

資料結構 二分查詢

二分查詢演算法也稱為折半搜尋 二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為...

資料結構 二分查詢

總共有n個元素,漸漸跟下去就是n,n 2,n 4,n 2 k 接下來操作元素的剩餘個數 其中k就是迴圈的次數。由於你n 2 k取整後 1,即令n 2 k 1,可得k log2n,是以2為底,n的對數 所以時間複雜度可以表示o o logn public class binarysearch else...

資料結構 二分查詢

二分查詢適用於有序的順序表,基本的思路是 首先將給定的關鍵字key與表array的中間位置的元素進行比較。如果相等,則查詢成功,如果不相等,則查詢的元素一定在表的前半部分或者後半部分。繼續縮小範圍到前半部分或者後半部分再進行同樣的查詢,直到找到為止,或者查完之後仍然沒有找到元素。下面給出一次演算法的...