用C++实现二分查找
生活随笔
收集整理的這篇文章主要介紹了
用C++实现二分查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用C++實現二分查找
對于有序表而言,通常使用二分查找來尋找待查記錄。二分查找,又名折半查找,具體查找過程為:先確定待查找記錄的范圍,然后逐步縮小范圍知道找到或者找不到該記錄為至。其C++實現代碼如下所示:
1 #include <iostream> 2 using namespace std; 3 4 /*二分查找: 5 array:待查找的數組 6 low:數組的第一個待查找的位置,通常為0 7 high:數組的長度-1 8 searchTarget:待查找的記錄*/ 9 int BinSearch (int array[], int low, int high, int searchTarget) 10 { 11 while (low <= high) 12 { 13 int mid = (low + high) / 2; 14 if (searchTarget < array[mid])//待查找的記錄在前半段 15 { 16 high = mid - 1; 17 } 18 else if (searchTarget > array[mid])//待查找的記錄在后半段 19 { 20 low = mid + 1; 21 } 22 else 23 { 24 return mid;//找到 25 } 26 } 27 return -1;//未找到 28 } 29 30 int main () 31 { 32 int a1[6] = {1, 3 ,5, 8, 11, 28}; 33 int targetLoc = BinSearch (a1, 0, 7, 5); 34 cout << "元素5在a1中的位置為(編號從0開始, -1表示未找到): " << targetLoc << endl; 35 int a2[5] = {2, 3, 6, 7, 10}; 36 targetLoc = BinSearch (a2, 0, 5, 5); 37 cout << "元素5在a2中的位置為(編號從0開始,-1表示未找到): " << targetLoc << endl; 38 return 0; 39可以看到我們找到了記錄5在數組a1中的位置,不能找到其在a2中的位置,以下是程序的運行結果: 元素5在a1中的位置為(編號從0開始, -1表示未找到): 2 元素5在a2中的位置為(編號從0開始,-1表示未找到): -1
?
轉載于:https://www.cnblogs.com/uestcjoel/p/6492366.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的用C++实现二分查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA面对对象(一)——封装
- 下一篇: VC++ ToolTip的简单使用