二分查找(binary search)算法
二分查找:在一组数中找到指定的数
//1. 存储在数组中(如果是链表则无法使用二分查找) //2. 有序的排列 (递增或递减,或重复数都无影响)
递归法:
//param:有序数组,检索开始为止,结束为止,要查找的数字 //return:返回目标数字所在为止,没有找到返回-1 int binSearch (int arr[], int low, int high, int key) { if (low <= high) { int mid = (low + high)/2; if (key == arr[mid]) return mid; else if (key < arr[mid]) return binSearch(arr,low,mid-1,key); else if (key > arr[mid]) return binSearch(arr,mid+1,high,key); } else return -1; }
循环查找:
//param:有序数组,数组大小,需要查找的数 //return:查找的数所在位置,找不到返回-1 int binSearch (int *arr, int size, int key) { if (arr == NULL || size == 0) return -1; int low = 0, high = size -1, mid = 0; while (low<=high) { mid = (low+high)/2; if (arr[mid] < key) low = mid + 1; else if (arr[mid] > key) high = mid - 1; else return mid; } return -1; }
参考原文:https://blog.csdn.net/idream68/article/details/89352653
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构