二分查詢-陣列實現(小trick)
template<typename T> int binarySearch(T arr[], int n, T target){ int l = 0, r = n-1; //在[l...r]範圍內尋找target
while(l <= r){ //當 l == r 時 區間有效 int mid = l+(r-l)/2; if(arr[mid] == target) return mid; if(target > arr[mid]) l = mid + 1; //target在[mid+1, r]中else //target<arr[mid]
r = mid - 1; //target在[l...mid]中 }
此處的需要注意的點是:
為什麼不用 int mid = (l+r)/2
因為mid,l,r 都是整型,所以如果l,r過大,相加後容易整型溢位,所以使用
int mid = l+(r-l)/2
先相減再加的方法。
相關推薦
二分查詢-陣列實現(小trick)
template<typename T> int binarySearch(T arr[], int n, T target){ int l = 0, r = n-1; //在[l...r]範圍內尋找targetwhile(l <= r){
資料結構實現 6.3:優先佇列_基於動態陣列實現(C++版)
資料結構實現 6.3:優先佇列_基於動態陣列實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 入隊操作 2.2 出隊操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析
資料結構實現 6.1:二叉堆_基於動態陣列實現(C++版)
資料結構實現 6.1:二叉堆_基於動態陣列實現(C++版) 1. 概念及基本框架 1.1 滿二叉樹 1.2 完全二叉樹 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 查詢操作
資料結構實現 4.1:集合_基於二分搜尋樹實現(C++版)
資料結構實現 4.1:集合_基於二分搜尋樹實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析
6-2 折半查詢的實現 (10 分)
給一個嚴格遞增數列,函式Search_Bin(SSTable ST, KeyType key)用來二分地查詢key在數列中的位置。 函式介面定義: Search_Bin(SSTable ST, KeyType key) 其中ST是有序表,key是查詢的值 裁判測試程式樣例:
1-3 折半查詢的實現 (10 分)
給一個嚴格遞增數列,函式Search_Bin(SSTable ST, KeyType key)用來二分地查詢key在數列中的位置。 函式介面定義: Search_Bin(SSTable ST, KeyType key) 其中ST是有序表,key是查詢的值 裁判測試程式樣例: #
棧 陣列實現(python語言)
class StackArray: def __init__(self): # 建空棧 self.array = [] def is_empty(self): #
六、二分查詢與二叉查詢樹(小象)
二分查詢演算法(遞迴,迴圈) 具有分治思想的多用迴圈,具有回溯思想的多用遞迴。 二分或者二叉排序樹都是在 分治的解決問題 二分查詢: 二分查詢:待查數是跟中間的數對比,只有查詢的數恰好等於中間的數返回正確; 遞迴 若比中間的數大,則去搜索右區
Java(二分查詢演算法實現,分別使用遞迴和非遞迴方式)
public class BinarySearch { private int[] array; private int index; private int min; private int max; public BinarySearch(int[]
用css實現文本不換行切超出限制時顯示省略號(小tips)
max 省略號 over 顯示 寬度 width code wid ellipsis div{ max-width: 500px; text-overflow: ellipsis; overflow: hidden; white-spac
unity_小功能實現(碰撞檢測)
dbo pla 打開 ide 發生 oid 區域 col 位置 unity_小功能實現(碰撞檢測) 1.觸發器Trigger:勾選IsTrigger屬性 //當player剛進入觸發區域的時刻發生觸發檢測,比如在靠近門的某個區域門一直處於開著狀態 void OnTri
汽車銷量查詢小助手(小程序)銷量趨勢圖功能及代碼知識分享
index ons 都是 snippets 意見 一個 搜索 所有 填充 1. 引言 在上篇博客汽車銷量查詢小助手(小程序)開發心路歷程 我分享了整個小程序的開發歷程,感謝有那麽多同學閱讀和關註。 後面就會將小程序中的各個功能塊以代碼片段的方式給大家分享出來,所有的代碼都在
【POJ - 3273 】Monthly Expense (二分,最大最小值)
題幹: Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recor
資料結構實現(三):陣列佇列(C++版)
資料結構實現(三):陣列佇列(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 入隊操作 2.2 出隊操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析 3.1 入
資料結構實現(二):陣列棧(C++版)
資料結構實現(二):陣列棧(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 入棧操作 2.2 出棧操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析 3.1 入棧
資料結構實現 9.1:並查集_陣列結構實現(C++版)
資料結構實現 9.1:並查集_陣列結構實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 聯合操作 2.2 查詢操作 2.3 其他操作 3. 演算法複雜度分析 3.1 聯合操作
Linux(小專案)————shell的實現,包含重定向、內建命令。
bash原理: 通過上面bash的原理我們可以,瞭解到shell的框架與流程: 1.等待使用者輸入命令。 2.解析使用者輸入的字串。 3.建立子程序執行exec程式替換 4.父程序等待子程序退出。 迴圈執行1~4步驟,即可完成my_shell。 最簡單版本的my_shell實現:
汽車銷量查詢小助手(小程式)開發心路歷程
偶然的機會,在旁邊公園帶孩子的時候,結識了鄰居家孩子的爸爸。他是做汽車維修的,聊天的時候,得知我是做軟體開發的。 他告訴我,他每個月都會對上個月的汽車銷量進行手動的彙總, copy 到 excel 中,然後利用 excel 的繪圖功能,檢視最近幾個月的趨勢圖。反覆這樣做,感覺很麻煩。 問我能不能使用程式自動完
汽車銷量查詢小助手(小程式)銷量趨勢圖功能及程式碼知識分享
1. 引言 在上篇部落格汽車銷量查詢小助手(小程式)開發心路歷程 我分享了整個小程式的開發歷程,感謝有那麼多同學閱讀和關注。 後面就會將小程式中的各個功能塊以程式碼片段的方式給大家分享出來,所有的程式碼都在我的 (https://github.com/ReyCG/carsales-snippets)專案下,
JS中陣列實現(倒序遍歷陣列,陣列連線字串)
// =================== 求最大值===================================== <script> var arr = [10,35,765,21345,678,89]; va