二分查找算法(C#实现)
想了解这个算法是因为在最近面试的时候看到了二分查找算法的时候懵比了,所以回来就要恶补一下
那么什么是二分查找算法呢.
看名称就知道它是一半一半的找的,有点类似快速排序算法
举个例子就是:有一个数组int[] array=new int[]{1,3,4,5,6,7};我们要找6这个数
第一次:中间数是4 6比4大,所以下一次需要找4右边的数
第二次:中间数是6 刚好
我们来看一下C#的实现
public static int fen(int[] array,int low,int high,int key){int middle = (low + high) / 2;if (low>high){return 1;}else{if (array[middle]==key){return middle;}else if (array[middle] > key){return fen(array, low, middle - 1, key);}else{return fen(array, middle+1, high, key);}}}
static void Main(string[] args){int[] array = new int[] {1,2,3,4,5,6,7,8,9,10 };var t=fen(array, 0, array.Length - 1, 9);Console.WriteLine(t);Console.Read();}
转载于:https://www.cnblogs.com/student-note/p/6782205.html
二分查找算法(C#实现)相关推荐
- 二分查找算法的一点改进
在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...
- 二分查找算法的两种实现方式:非递归实现和递归实现
二分查找的条件是对一组有序数组的查找,这一点很容易忘记,在使用二分查找的时候先要对数组进行排序. 先说一下二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid ...
- 二分查找算法为什么要先排序
其实二分查找算法就和我们在一个英文字典中找一个单词一样,比如要找middle这个单词,先把字典翻到大概中间的位置,那么现在字典就被分成两个部分了,middle这个单词要么在第一个部分,要么在第二个部分 ...
- LeetCode面试刷题技巧-二分查找算法代码思路解析
二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...
- Python 二分查找算法
如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76 ...
- 二分查找算法(递归与非递归两种方式)
首先说说二分查找法. 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标. 采用非递归方式完成二分查找法.java代码如下 ...
- JavaScript实现binarySearch二分查找算法(附完整源码)
JavaScript实现binarySearch二分查找算法(附完整源码) Comparator.js完整源代码 binarySearch.js完整源代码 binarySearch.test.js完整 ...
- 二分查找算法及其变种
前言 二分查找算法也称为折半查找算法,是一种在查找算法中普遍使用的算法.其算法的基本思想是:在有序表中,取中间的记录作为比较关键字,若给定值与中间记录的关键字相等,则查找成功:若给定的值小于中间记录的 ...
- 顺序查找与二分查找算法
顺序查找算法 顺序查找是非常简单常用的查找算法,基本思路:从第一个元素m开始逐个与需要查找的元素x进行比较,当比较到元素值相同(即m=x)时返回元素m的下标,如果比较到最后都没有找到,则返回-1.该算 ...
- 递归与分治——二分查找算法(折半查找算法)
二分搜索主要解决的问题是确定排序后的数组中是否包含目标元素val. 二分搜索通过持续跟踪数组中包含元素val的范围.分为两个过程,第一就是找到了,第二个就是没找到: 一开始,这个范围是整个数组,然后通 ...
最新文章
- Chrome不支持showModalDialog的解决方案
- 读阮一峰对《javascript语言精粹》的笔记,我有疑问。
- opencl高斯源码整理
- Qt5 中 QWebEngineView 的使用,让桌面客户端和 web 端友好通信
- linux grep命令详解_Linux 上USB 调试神器lsusb命令详解
- PHPExcel设置自动列宽
- asp.net中提交表单数据时提示从客户端(。。。)中检测到有潜在危险的 Request.Form 值...
- Android官方开发文档Training系列课程中文版:布局性能优化之布局复用
- Linux系统编程:循环创建N个子线程并顺序输出
- Windwos命令工作笔记002---windows下tree命令列出文件目录打印到文件中_过滤文件不知道怎么做啊
- SAP License:最近的FICO面试题目
- python itertools combination_Python itertools.combinations 和 itertools.permutations 等价代码实现...
- auto.js停止所有线程_使用多线程处理输入的数据
- Linux (Ubuntu): bash: tailf: command not found
- 单模光纤和多模光纤的区别
- BEEF的搭建与使用
- BouncyCastle使用
- 功能对等四个原则_“奈达功能对等理论”四个方面的原始出处及定义是什么?...
- mysql dede arctiny_dede标签的使用
- 关于RTL8192CU