二分查找

 二分查找的基本思想:

是将n个元素分成大致相等的两部分,取arr[n/2]与target做比较,如果target=arr[n/2],则找到target,算法中止;如果target<arr[n/2],则只要在数组arr的左半部分继续搜索target,如果target>arr[n/2],则只要在数组arr的右半部搜索target.
优点:
查找速度快
缺点:
待查表为有序表
代码实现:

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 //二分查找法查找有序数组arr中的target元素
 4 //如果找到target元素,返回相应的索引index
 5 template<typename T>
 6 int binarySearch(T arr[],int n ,T target){
 7     //arr[l......r]
 8     int l = 0 ,r = n-1;
 9     while( l <= r ){
10         //int mid = (l+r)/2;
11         int mid = l+(r-l)/2;
12         if (arr[mid] == target)
13             return mid;            
14             if(target < arr[mid])
15             r = mid - 1;
16             else 
17             l = mid +1;
18             }
19             return -1;    
20 } 
21 int main() {
22     return 0;
23 }
复制代码

 

posted @   Tom-shushu  阅读(211)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示