c# 二分查找算法
时间:2023-10-24 04:42:45
折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。
A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;
B 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
C 如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
时间复杂度折半搜索每次把搜索区域减少一半,时间复杂度为。
(n代表集合中元素的个数)空间复杂度
/// <summary>
/// 二分查找
/// </summary>
/// <param name="arr"></param>
/// <param name="low">开始索引 0</param>
/// <param name="high">结束索引 </param>
/// <param name="key">要查找的对象</param>
/// <returns></returns>
public static int BinarySearch(int[] arr, int low, int high, int key)
{
int mid = (low + high) / 2;
if (low > high)
return -1;
else
{
if (arr[mid] == key)
return mid;
else if (arr[mid] > key)
return BinarySearch(arr, low, mid - 1, key);
else
return BinarySearch(arr, mid + 1, high, key);
}
}
实例:
int[] y = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13 };
int rr = BinarySearch(y, 0, y.Length - 1, 13);
Console.Write(rr); //12
标签:c#,二分查找
0
投稿
猜你喜欢
Android读取assets目录下的所有图片并显示的方法
2023-03-09 22:06:30
安卓(Android)实现选择时间功能
2023-11-05 08:20:58
基于spring中的aop简单实例讲解
2023-10-16 21:01:10
java实现删除某条信息并刷新当前页操作
2022-06-26 07:12:12
程序员最喜欢的ThreadLocal使用姿势
2022-10-22 21:14:55
Java——对象初始化顺序使用详解
2023-11-01 01:08:46
SpringBoot和Swagger结合提高API开发效率
2023-11-25 01:23:16
C#通过WIN32 API实现嵌入程序窗体
2021-08-13 04:53:10
Android编程实现禁止系统锁屏与解锁亮屏的方法
2022-05-21 02:35:39
C#装箱和拆箱操作实例分析
2021-10-25 13:17:36
Android用户输入自动提示控件AutoCompleteTextView使用方法
2022-02-25 14:59:50
SpringBoot 如何添加容器启动的初始化逻辑的操作方法
2021-11-20 12:10:39
Jenkins Pipeline 部署 SpringBoot 应用的教程详解
2022-09-26 14:06:27
Android使用GestureOverlayView控件实现手势识别
2023-03-02 08:46:26
Java实现有限状态机的推荐方案分享
2022-01-07 15:54:27
十种JAVA排序算法实例
2022-11-11 00:19:54
Java实现人机猜拳游戏
2023-10-16 08:47:56
SpringMVC深入讲解文件的上传下载实现
2022-04-21 09:01:51
Android数据库中事务操作方法之银行转账示例
2023-07-22 07:56:13
Java HtmlParse提取标签中的值操作
2021-10-07 04:43:10