首页 > 其他 > 详细

140825●二分法

时间:2014-08-25 13:16:04      阅读:75      评论:0      收藏:0      [点我收藏+]
           //二分法查询
            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●二分法

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!