二分查找怎么找,快速查找和二分查找

  二分查找怎么找,快速查找和二分查找

  归纳的优点:比较次数少,搜索速度快,平均性能好。

  缺点:要搜索的表是有序表,插入和删除比较困难。

  时间复杂度:O(logN)

  实际场景:有序阵列

  假设思路表按升序排列,将中间元素与待检元素进行比较,如果中间元素与待检元素相等,则找到中间元素;如果小于,就找前半段;不然下半年再找。

  如前所述,二分搜索法实际上主要针对搜索有序数组。他的比较次数少,查找速度快,这是我们学习C语言前期需要掌握的技能。接下来,我用绘图的形式给大家解释一下:

  首先,让我简单介绍一下二分搜索法,也就是说,我发现了一个中间值。如果这个中间值大于我要找的数,那么这个中间值右边的所有数都可以排除。如果它比我要找的数字小,那么排除中间值左边的数字。接下来画一张图来说明:

  让我们把这个数组命名为arr[10]

  看图中的值,可以发现这个数组的中间值是5和6,不过不用担心,因为(0 9)/2=4在电脑里。

  所以他的中间值是arr[4],也就是带有元素5的值,

  可以看到,我们的中值是4,对应的元素是5。我用黑圈圈了起来。因为是有序的,下标4的右边可以完全排除。接下来,我们只需要找到4的左边。当然,因为已经判断出4,所以也可以排除4对应的元素5。那么,我们接下来搜索的范围就是下标0到3的范围,也就是{1,2,3,4}。

  接下来,搜索范围在棕色框中。被搜索的下标为1的元素对应于被圈起来的元素2。然后你可以发现2小于要搜索的数字,那么下标1的左边,包括带下标1的值都可以忽略,下一个范围缩小到{3,4 };

  而我们的left=median 1,因为不需要包含下标1的元素,

  再看,因为left=2,所以(2 ^ 3)/2=2,我们找到了下标为2的元素,也就是我们要找的数字,于是我们实现了二分搜索法,然后给你打印代码。

  # include assert . h int tow fen(int * arr,int sz,int n){ if(SZ=0){ return-1;} assert(arr);int left=0;int right=SZ-1;while(left=right){ int sum=(left right)/2;if(n arr[sum]){ left=sum 1;} else if(n arr[sum]){ right=sum-1;} else {返回sum} } return-1;}int main(){ int arr[10]={ 1,2,3,4,5,6,7,8,9,10 };int SZ=sizeof(arr)/sizeof(arr[0]);Printf(请输入要查找的数字\ n );int n=0;scanf(%d ,int ret=towfen(arr,sz,n);如果(ret!=-1) {printf (found,下标是%d ,ret);} else printf(未找到\ n );返回0;}如你所见,我在图中告诉你的左=中值1,右=中值-1都用上了。我们三次后才找到这十个数的数组,效率可以说是更快了。这次二分搜索法的方法就介绍到这里,希望得到大家的免费好评。你的赞是我更新博客的动力!

  ,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: