首页 > 代码库 > 140825●二分法

140825●二分法

           //二分法查询            Console.Write("请输入数据个数:");            int n = Convert.ToInt32(Console.ReadLine());            int[] no = new int[n];            int x = 0, y = n - 1;    //x、y分别为每次把数组二分后的最小元素、最大元素的下标                //为定义的数组赋值(该程序中数组默认按升序排列,否则需要为数组元素排序)            for (int i = 0; i < n; i++)            {                Console.Write("输入数据{0}:", i + 1);                no[i] = Convert.ToInt32(Console.ReadLine());            }            Console.Clear();    //清屏            Console.Write("请输入要查询的数:");            int sel = Convert.ToInt32(Console.ReadLine());                //二分法            while (y >= x)            {                int zj = (x + y) / 2;    //zj为x,y的中间值                if (sel == no[zj])    //判断查询值是否是本组元素的中间元素                {                    Console.WriteLine("第{0}个元素!", zj + 1);                    break;                }                else if (sel < no[zj])    //查询值小于中间元素,则中间元素前一位作为下组元素的最大元素                {                    y = zj - 1;                }                else if (sel > no[zj])    //查询值大于中间元素,则中间元素后一位作为下组元素的最小元素                {                    x = zj + 1;                }            }            if (y < x)            {                Console.WriteLine("查无此数!");            }

 

140825●二分法