请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

二分查找

  [复制链接]
查看5224 | 回复7 | 2018-8-20 15:58:08 | 显示全部楼层 |阅读模式
    前几天我去面试的时候,有一题是关于二分查找的题目;当时我就感觉要悲剧了,因为二分查找我就没写过,只记得个大概的思路而且还要手写代码出来,而且面试都是有时间限制的最后只能空白了。吓的我赶紧写个二分查找教程出来温习下。。。。。好了,废话就说到这吧。
     我们首先来看看能使用二分查询算法的条件:
     1、必须采用顺序结构存储结构;
     2、必须按关键字大小有序排序。
     二分查找的基本思想是将数组中的n个元素分成大致相等的两部分,取数组的a[n/2]与x进行比较,x大于a[n/2]表示x存在于前半部分的数组中,反之表示x存在于后半部分的数组中;重复同样的操作直到找出匹配值x或数组不存在匹配值。
代码如下:
[C#] 纯文本查看 复制代码
 /// <summary>
        /// 查找数组中值的索引(二分查找)
        /// </summary>
        /// <param name="binarysearch">数组</param>
        /// <param name="Num">查找值</param>
        /// <returns>返回值在数组中的索引(查找值不存在在数据中时返回-1)</returns>
        public static int BinarySearch(int[] binarysearch, int Num)
        {
            int iMin = 0;//最小索引
            int iMax = binarysearch.Length - 1;//最大索引
            while (iMin <= iMax)
            {
                //取折半的索引
                int Number = (iMax + iMin) / 2;
                //判断数组的值是否大于查找值 大于:更改最大索引
                if (binarysearch[Number] > Num)
                {
                    iMax = Number - 1;
                }
                //判断数组的值是否小于查找值 小于:更改最小索引
                else if (binarysearch[(Number)] < Num)
                {
                    iMin = Number + 1;
                }
                else
                {
                    //判断数组的值等于查找值直接返回索引值
                    return Number;
                }
            }
            return -1;
        }


ibcadmin | 2018-8-21 12:35:10 | 显示全部楼层
66666

点评

每次看到的都是楠哥你的回复  详情 回复 发表于 2018-8-23 11:49
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2018-8-23 11:49:09 | 显示全部楼层

每次看到的都是楠哥你的回复
ibcadmin | 2018-8-26 21:16:05 | 显示全部楼层
剑弑 发表于 2018-8-23 11:49
每次看到的都是楠哥你的回复

论坛都不热闹了
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
wscuw | 2019-8-2 13:56:57 | 显示全部楼层
选个好的 才有保证 这话没错












2019代怀孕价格
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则