首页 > 其他分享 >自定义函数二分法查找,数组问题

自定义函数二分法查找,数组问题

时间:2022-11-12 12:33:02浏览次数:56  
标签:arr right return 自定义 int 二分法 查找 数组 left

int find(int arr1[],int x,int y)
{
int left=0;
int right=y-1;
while(right>=left)
{
if(x>arr1[(left+right)/2])
left=(left+right)/2+1;
else if(x<arr1[(left+right)/2])
right=(left+right)/2-1;
else
return (left+right)/2;
}
return 0;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
int sz=sizeof(arr)/sizeof(arr[0]);
int b=0;
int a=4;
if ((b=find(arr,a,sz))==0)
{
printf("找不到");
}
else
{
printf("下标是:%d\n",b);
}
return 0;
}

二分法数组查找函数,传递数组arr时,并不是传递数组所有元素,而是第一个元素的地址(此举为了节省空间),所以应该在主函数里求得数组的大小,然后传递给形参。否则求出来为1,地址占四个字节,一个元素占四个字节。

写代码时经常忘记left/right=(mid+-1)虽然没有影响,但会降低效率。


标签:arr,right,return,自定义,int,二分法,查找,数组,left
From: https://blog.51cto.com/u_15817612/5846587

相关文章

  • 常用查找算法
    5.2常用查找算法学习目标:掌握常用的查找算法算法简介:find//查找元素find_if//按条件查找元素adjacent_find//查......
  • 查找
        数组和索引 ......
  • node07_自定义一个html转义模块
    在日常开发的过程中除了转换时间之外,我们可能还会遇到需要将html代码转义成文本,以及将文本转义成html的需求,下面我们来自定义一个转义的模块。具体的思路就是使用正则表达......
  • node_06自定义一个格式化时间模块并使用
    在上一篇博客中,我们知道了自定义模块的定义以及如何暴露出去让其他模块使用。在日常的开发过程中我们经常会遇到一些处理时间格式的问题,下面我们来自定义一个处理时间的模......
  • 自定义的Qt给统计图添加颜色样例控件
    本文主要是给博文“自定义的Qt折线图控件”的图表添加颜色样例。之所以分开叙述是因为本文也是自定义控件,它不仅可以给折线图添加,还可以给其他类型的图表(柱状图、饼形图等,......
  • nuxtjs3 学习踩坑1 自定义路由的配置
    刚安装的nuxt框架搭配vue3使用路由的时候除了按照约定的规则配置路由以外,还可以使用基于vue-router写法的路由文件去做配置,需要如图所示的位置编写文件:其中这样的路由要......
  • meven怎么自定义配置
    今天导入一个es模块要求用7.4.2但是里面有个文件一直是6.4.3 然后我去maven仓库下载还是不行,,最后我直接依赖锁定  强制锁定  成功......
  • 自定义的Qt折线图控件
    可以在QWidget内绘制折线图。做的比较简单,因为从写到调试只用了大概1天时间。不太智能,但是可以应对一般的场景。在VS2015和Qt5.9上测试可以使用。当然,由于测试不到位里面可......
  • vue element 表单自定义效验 及 单独效验某个值
    主要功能 (表单自定义效验 && 单独效验某个值)表单自定义效验exportdefault{data(){//定义效验constvalidatePersonCharge=(rul......
  • 如何在Linux中查找进程
    大多数Linux用户使用预装的默认系统监控工具来检查内存、CPU使用率等。在Linux中,许多应用程序作为守护进程在系统后台运行,这会消耗更多的系统资源。在Linux中,您可以......