查找算法复习(1)--二分查找法
二分查找法要求被查找的线性表已经排序。
每一次查找,按中间索引把表分为左右两部分,通过对比中间值与目标值的大小,决定下一次查找在左表还是右表,直到无法再分割。
1 public static int BinarySearch(string[] datalist, string key) 2 { 3 int low = 0; 4 int high = datalist.Length - 1;//两个下标,决定查找的区间 5 int middle; 6 while (low <= high)//无法再分割就结束 7 { 8 middle = (low + high) / 2;//中间下标 9 if (datalist[middle].CompareTo(key) > 0)//与中间值比较,缩小查找区间 10 high = middle - 1; 11 else if (datalist[middle].CompareTo(key) < 0) 12 low = middle + 1; 13 else 14 return middle; 15 } 16 return -1; 17 }
使用
1 string[] a = new string[] { "khlin", "hzluo", "jjguo", "hhchen", "jxhan", "lxiao", "jsxiao", "wwang", "lsxie", "lwang" }; 2 3 SelectedSort(a); 4 foreach(string stra in a) 5 Console.Write("{0}, ",stra); 6 Console.WriteLine(); 7 string target1 = "jjguo"; 8 Console.WriteLine("{0} index: {1}", target1, BinarySearch(a, target1)); 9 string target2 = "lsxie"; 10 Console.WriteLine("{0} index: {1}", target2, BinarySearch(a, target2)); 11 string target3 = "hello"; 12 Console.WriteLine("{0} index: {1}", target3, BinarySearch(a, target3));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现