简单高效二分查找算法
首先介绍下对二分查找算法的理解:
目的:
从一组有序序列中查找一给定数的位置。
成员:
1.有序序列,假定为数组。
2.任意数
思路:
1.取数组中间的数与给的任意数做比较,
2.如果中间数大于任意数,则以中间数为分界一分为二,取左边做新的数组,右边的丢掉。
拿新的数组和任意数重复1的操作。
3.如果中间数小于任意数,则以中间数为分界一分为二,取右边做新的数组,左边的丢掉。
拿新的数组和任意数重复1的操作。
python代码如下:
def binary_search(arr,item): low=0 high=len(arr)-1 while low<=high: mid = int((high+low) / 2) guess = arr[mid] if guess == item: return mid if guess > item: high=mid-1 else: low=mid+1 return None my_list = [1,3,5,7,9] print (binary_search(my_list,3)) print(binary_search(my_list,-1))
运行结果:
1
None
C#代码如下:
using System; namespace BinarySearch { class Program { static void Main(string[] args) { int[] arr = new int[] { 1, 3, 5, 7, 9 }; var result = Search(arr, 3); ShowMessage(result); result = Search(arr, -1); ShowMessage(result); Console.Read(); } private static void ShowMessage(int result) { Console.WriteLine($"result位置 " + (result == -1 ? "未找到" : result.ToString())); } static int Search(int[] arr,int item) { int low=0,mid=0, high = arr.Length - 1; while(low <= high) { mid = (high + low) / 2; if (arr[mid] == item) return mid; if (arr[mid] > item) high = mid - 1; else if(arr[mid] < item) low = mid + 1; else return -1; } return -1; } } }
运行结果:
result位置 1
result位置 未找到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)