C#实现二分法查找算法

来源:互联网 发布:html5shiv.min.js下载 编辑:程序博客网 时间:2024/04/28 04:16

定义

在计算机科学中,二分法查找(binary search)也叫折半查找(half-interval search),又叫对数搜索(logarithmic search)。这是一种在有序数组中查找某一特定元素的搜索算法。

原理

搜索过程从数组的中间元素开始。如果中间元素正好是要查找的元素,则搜索过程终止;如果某一特定的元素大于或者小于小于中间元素,那就在大于或者小于中间元素的那一半查找,而且跟开始一样也从中间元素开始比较。如果某一步骤数组为空,则代表找不到。

特点

这种搜索算法每依次比较都使搜索范围缩小一般

注意

这种搜索算法用于有序数组中的查找

应用

可直接用于在一个数组中进行元素的查找,也可用于插入排序

示例代码

下面是一个二分法查找:
        /// <summary>        /// 二分法查找        /// </summary>        /// <param name="arr"></param>        /// <param name="key">要查找的对象</param>        public static int BinarySearch(int[] arr,int value)        {            int low = 0;            int high = arr.Length - 1;            while(low<=high)            {                int middle = (low + high) / 2;                if (value == arr[middle])                {                    return middle;//如果找到了就直接返回这个元素的索引                }                else if(value >arr[middle])                {                    low = middle + 1;                }                else                {                    high = middle - 1;                }            }            return -1;//如果找不到就返回-1;        }

测试一下:
            int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };            int value = BinarySearch(arr, 4);            Console.WriteLine(value);

结果:


0 0