C#二分查找法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#⼆分查找法
=============================
折半搜索,也称⼆分查找算法、⼆分搜索,是⼀种在有序数组中查找某⼀特定元素的搜索算法。

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,33,5,6,7,8,,45,9,10,11,12,13,88 };
int rr = BinarySearch(y, 0, y.Length - 1, 13);
Message.Box(rr); //12。

相关文档
最新文档