c#-折半查找、二分算法-算法

折半搜索,也称二分查找算法二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。

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

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

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

        /// <summary>
        /// 折半查找、二分算法
        /// /数组必须按照一定的顺序
        /// </summary>
        /// <param name="min">最小值</param>
        /// <param name="max">最大值</param>
        /// <param name="num">查找的对象</param>
        /// <param name="arr"></param>
        /// <returns></returns>
        public static int Twoselect(int min,int max,int num,int[] arr)
        {
            if (min == max) return -1;
            int mid = (min + max) / 2;
            if (Convert.ToInt32(arr[mid]) == num) return mid;
            else if (Convert.ToInt32(arr[mid])<num)
            {
                return Twoselect(mid + 1, max, num,arr);
            }
            else
            {
                return Twoselect(mid , mid-1, num, arr);
            }
            
        }

 

实例:

            int[] arr =new int[] { 1,2,3,4,5,6,7,8,9,10};
            var a = Twoselect(1,10, 9, arr);
            Console.WriteLine(a);
            Console.ReadKey();//8

 

posted @ 2021-10-27 16:13  我的未来方程式i  阅读(93)  评论(0编辑  收藏  举报