二分搜尋binary search和貪婪演算法

2021-10-07 02:36:18 字數 907 閱讀 7007

定義:二分搜尋也稱折半搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。

運用前提:必須是排好序的。

輸入並不一定是陣列,也可能是給定乙個區間和終止的位置。

優點:、

缺點:採取自平衡二叉查詢樹

可在o(nlogn)的時間內用給定的資料構建出一顆二叉查詢樹。

可在o(logn)的時間內對資料進行搜尋

可在o(logn)的時間內完成插入和刪除的操作

當:輸入的陣列或區間是有序的,且不會常變動,要求從中找出乙個滿足條件的元素->二分搜尋binary

基本結題模板

遞迴:優點是簡潔

缺點是執行消耗大

int binary_search(int nums,int target,int low,int high)

else

}

確定搜尋的範圍和區間

取中間的數判斷是否滿足條件

如果不滿住,判斷應該往那個半邊繼續進行搜尋。

int binary_search(int nums,int target,int low,int high)

else

}return -1;

}

找確定的邊界

greedy 總是做出在當前看來最好的選擇

不從整體的角度去考慮,僅對區域性的最優解感興趣

什麼問題適用貪婪演算法?

只有當哪些區域性最優策略能產生全域性最優策略的時候。

揹包問題:

有三種不同的貪婪策略

1、選取價值最大的物品

2、選取重量最小的物品

3、選取價值/重量比最大的物品

貪婪物品有   a  b  c

重量分別是: 25,10,10

價值分別是:100,80,80

STL中的二分查詢(binary search)

stl中對於有序序列 vector,list等 提供了相當相當強大的二分搜尋binary search演算法。對於可以隨機訪問容器 如vector等 binary search負載度為對數級別 logn 對於非隨機訪問容器 如list 則演算法複雜度為線性。現在簡要介紹一下幾種常用的binary s...

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...

二分(二分答案 二分搜尋)與單調性

經典二分搜尋是二分空間範圍。二分答案又叫二分猜值,是二分解的值空間。其實可以統一,普通的二分搜尋也是二分答案值域 下標空間,也是猜值。二分必須滿足單調性,最直觀的,二分搜尋只能在有序陣列上進行。單調性體現在,下標和元素值是單調的,也就是 if j i 有 a j a i 一般二分答案解決的問題是最優...