二分法 C#

class Program

    {

        static void Main(string[] args)

        {                                        // 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 16, 17, 18,               

            Console.WriteLine(My2FenFa(new int[19] { 1,2,3,4,5,6,7,8,9,9,11,11,11,11,14,15,119,122,133},119));

            Console.ReadLine();

        }

        private static int My2FenFa(int[] nums, int target)

        {

            //数组左边界索引值

            int left = 0;

            //数组的右边界索引值

            int right = nums.Length;

            //数组的中位值的索引值

            int mid = 0;

//在循环中,根据中位值与目标值对比,更新左(右)边界的值,从而缩小检索范围,直到找到目标值。

            while(left <= right)

            {  //每循环一次,中位值索引也要随着左(右)边界的改变而改变

                mid = (left + right) / 2;


                if(nums[mid].Equals(target))

                {

                    return mid;

                }      //中位值在目标值左边时更新左边界索引

                else if(nums[mid] < target)

                {

                    left = mid + 1;

                }    //中位值在目标值右边时更新右边界索引

                else if(source[mid] > target)

                {

                    right = mid - 1;

                }

            }

            return -1;

        }

    }

你可能感兴趣的:(二分法 C#)