c# 二分查找

A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;

B 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。

C 如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

时间复杂度折半搜索每次把搜索区域减少一半,时间复杂度为O\left( \log n  \right)

(n代表集合中元素的个数)空间复杂度O\left(  1  \right)

可以直接调用的方法:


/// 
/// 二分查找
/// 
/// 
/// 开始索引 0
/// 结束索引 
/// 要查找的对象
/// 
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);elsereturn 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

引用:https://www.cnblogs.com/zengxiangzhan/p/3305908.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部