C#实现二分法查找算法

时间:2022-10-27 16:41:20

定义

在计算机科学中,二分法查找(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);

结果:

C#实现二分法查找算法