二分法在陣列計算中的應用

2021-10-12 06:57:57 字數 1120 閱讀 1712

陣列作為一種最基本的資料結構,表示儲存在連續記憶體空間的相同型別資料,分一維陣列和二維陣列,一維陣列在記憶體中是連續儲存;二維陣列一般是按行或列來儲存,每一行或列又是連續儲存。一般我們是通過下標對陣列進行索引,比如a[0],a[1],由於陣列在記憶體中是連續存放,如果我們對其進行增加或刪除操作,就必須移動其他元素,即使得演算法的時間複雜度為o(n),故一般不會對陣列進行頻繁的增刪操作。

我們通過力扣的乙個習題來學習下陣列的使用:

35. 搜尋插入位置

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

你可以假設陣列中無重複元素。

示例 1:

輸入:[1,3,5,6], 5

輸出:2

示例 2:

輸入:[1,3,5,6], 2

輸出:1

示例 3:

輸入:[1,3,5,6], 7

輸出:4

示例 4:

輸入:[1,3,5,6], 0

輸出:0

對於這道題我們採用二分法來做是比較容易的。

c++**如下:

#includeusing namespace std;

int serchtarget( int num,int target,int n)

else if(num[middle] < target)

else

}return right + 1;

} int main()

cout << "the target value is:" << endl;

cin >> b;

right = serchtarget(a,b,n);

cout << right << endl;

}

二分法應用

eg poj 2456 瘋牛 include include includeusing namespace std typedef long long ll const int maxn 1e7 10 ll a maxn ll n,c 對距離進行二分 int ans 0 int sum 1 int ...

二分法在陣列中查詢關鍵字

此程式演示了二分法查詢演算法 針對按從小到大排列的陣列 的實現。include using namespace std 功能 實現陣列的二分法查詢 只演算法只適合按從小到大排列的陣列 返回值 關鍵字在陣列中的下標,返回 1表示未找到 a 要搜尋的陣列 len 陣列元素個數 key 要查詢的關鍵字 i...

二分法及其應用

二分法,是通過不斷縮小解的可能存在的範圍,從而求得問題的最優解的方法。經常有二分與其他演算法結合的題目。1.從有序陣列查詢某個值 以stl中的lower bound與upper bound為例 lower boud begin,end,val 函式輸入需要查詢的有序數列前閉後開區間,查詢數列中第乙個...