C# 二分法的解读
2024-09-06 16:05:01
注:一定是有序的数组,才可以使用这种算法,如果数组没有排序则先进行排序后再调用此方法。
1、二分法是做什么的呢?
当然是查找数组中的数据了,开个玩笑,哈哈哈。
2、为啥要用这种方式呢?
二分顾名思义,就是将一组数据对半分开(比如左右两部分,下面用左右数组表示),从中间位置开始查找,
如果中间这个值正是咱们要找的值则直接返回这个值(或者索引),如果没有找到,那么去判断中间的这个值和咱们要找的值哪个大,
如果中间值比咱们要找的值大,则将之前分开的数组的左面的数组再进行对半分开,递归直到找到咱们要的那个值才会结束,反之亦然,
但是如果就是没有咱们找的值那么岂不是死循环了嘛,
所以要加判断,如果递归到开始索引大于结束索引,也就是查到最后了还是没有找到匹配的值,则退出。
这种搜索算法每一次比较都使搜索范围缩小一半,这样对于大数据量的数组,极大的提升了查找效率。
private void button1_Click(object sender, EventArgs e)
{
int[] arry = { , , , , , , , , };
//测试 要找的数字是15
int key = ;
//查找数并返回 若有,返回该数,没有则返回-1
int rr = BinarySearch(arry, , arry.Length - , key);
} /// <summary>
/// 二分法查找指定值
/// </summary>
/// <param name="arr">目标数组</param>
/// <param name="start">开始索引</param>
/// <param name="end">结束索引</param>
/// <param name="key">要查找的关键字</param>
/// <returns></returns>
public static int BinarySearch(int[] arr, int start, int end, int key)
{
int mid = (start + end) / ;
if (start > end)
return -;//查找不到返回-1
else
{
Console.WriteLine(arr[mid]);//监测查找了哪些数字
if (arr[mid] == key)
return mid;//若查找到,返回该数
else if (arr[mid] > key)
return BinarySearch(arr, start, mid - , key);
else return BinarySearch(arr, mid + , end, key);
}
}
最新文章
- java中log4j用法详细讲解和一些小总结
- codeforces 734E(DFS,树的直径(最长路))
- 为什么PCB上的单端阻抗控制50欧姆
- 【代码笔记】iOS-单项选择框
- 从Wep page到Application
- windows初始化后做了哪些事情
- 第二章 开始学习C++
- windows系统下Python环境的搭建
- Python串口操作纸币器1
- OSSchedLock()函数透析
- Installshield停止操作系统进程的代码--IS5版本适用
- ngx.re.match使用示例
- Love2D游戏引擎制作贪吃蛇游戏
- post方式接口测试(一)_新建测试用例
- 在Repeater中使用DropDownList的方法
- apply、call
- laravel中的plicy授权方法:
- 手机访问PC端
- Tomcat:IOException while loading persisted sessions: java.io.EOFException
- 如何把JavaScript数组中指定的一个元素移动到第一位
热门文章
- dell装系统
- SELECT command denied to user &#39;&#39;@&#39;%&#39; for column &#39;xxx_id&#39; in table &#39;users_xxx&#39; 权限问题
- linux 位操作
- linux 在启动时获得专用的缓冲
- Spring Security学习笔记-自定义Spring Security过滤链
- 2018-2-13-win10-uwp-绑定静态属性
- Java虚拟机-类文件结构
- HDU6581 Vacation (HDU2019多校第一场1004)
- 【Repo】repo sync:error.GitError: cannot initialize work tree
- 如何在ClickOnce 应用中使用 GitVersion