鱼C论坛

 找回密码
 立即注册
查看: 2895|回复: 0

[学习笔记] 折半查找法思想

[复制链接]
发表于 2018-1-11 16:57:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qq1242009750 于 2018-1-11 18:00 编辑

折半查找法思想


操作判断说明.png

例子:
无标题.png

代码如下:
//折半查找法
int bin_Search(int *Arr, int num)
{
        int low = 0, mid, hig = MAX - 1;

        while (low <= hig)                        //如果low大于hig时就是溢出了,也就可以判断要查找的数不在数组内
        {
                mid = (hig + low) / 2;
                if (Arr[mid] < num)
                {
                        low = mid + 1;
                }
                else if(Arr[mid] > num)
                {
                        hig = mid - 1;
                }
                
                if (Arr[mid] == num)
                {
                        return mid;
                }
        }
        
        return -1;   //查找失败!
}

递归版本:
int CSearch::recursion(int *Arr, int low, int mid, int hig, int num)
{
        if (low > hig)        //判断是否出错
        {
                return -1;
        }
        
        if (Arr[mid] == num)        //判断是否找到
        {
                return mid;
        }

        return Arr[mid] > num ? recursion(Arr, low, (low + mid - 1) / 2, mid - 1, num) : recursion(Arr, mid + 1, (mid + 1 + hig) / 2, hig, num);  //判断mid的值是否大于查找值或小于(用于传递不同的参数)
}

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
不二如是 + 5 + 5 很细心的笔记

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 21:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表