码迷,mamicode.com
首页 > 其他好文 > 详细

140825●二分法

时间:2014-08-25 13:16:04      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   for   数据   ar   div   log   line   

           //二分法查询
            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●二分法

标签:style   blog   color   for   数据   ar   div   log   line   

原文地址:http://www.cnblogs.com/phantom-k/p/3934555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!