贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

折半查找法(C语言折半查找法如何使用)

来源:网络转载 时间:2024-05-03 08:17:01

1. 折半查找介绍

1.1 定义

折半查找也称二分查找,是一种在有序数组中查找某一特定元素的搜索算法,每一次查找,搜索范围均缩小一半,效率较高。如果数组是乱序状态,则应排序,再进行查找。

1.2 基本原理

搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半 。

1.3 时间复杂度与空间复杂度

总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/ 2 k 2^k 2k,一直到1,其中k就是循环的次数。

由于n/ 2 k 2 ^ k 2k取整后>=1,即令n/ 2 k 2^k 2k=1,可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)。

二分查找只需要额外存储三个变量:最大值 ,最小值 和 中点,空间复杂度为常数 O(1)。

1.4 优缺点

优点:比较次数少,查找速度快,平均性能好。

缺点:要求待查表为有序表,且插入删除困难。

2. 代码实现

2.1 代码设计

  1. 输入需要查找的元素,我们输入的是38;left是有序数组最左端0,是最小值,right是有序数组最右端10,是最大值,mid为数组1/2位置,即array[5];

  2. 38比array[5] = 19大,因此left等于原mid+1,即array[6] = 26,right不变;新mid为(left+right)/2 = (6+10)/2 = 8;

  3. 38比array[8] = 36大,因此left等于上一次mid+1,即array[9] = 38,right不变;新mid为(left+right)/2 = (9+10)/2 = 9;

  4. 38等于array[9],mid与left重合, 查找成功,返回数组下标9.

2.2 代码实现

#include<stdio.h>#include<string.h>intbinarySearch(intarray[],intlen,inttarget){intleft=0;intright=len-1;while(left<=right){intmid=(right+left)/2;if(array[mid]==target){returnmid;}elseif(array[mid]<target){left=mid+1;}elseif(array[mid]>target){right=mid-1;}}return-1;}intmain(void){intarray[]={2,3,4,5,15,19,26,27,36,38,45};intkey=0,ret;printf("请输入需要查找的数字:");scanf("%d",&key);ret=binarySearch(array,sizeof(array)/sizeof(int),key);if(ret<0)printf("查找失败\n");elseprintf("该数字为数组第%d个元素\n",ret+1);return0;}

运行结果:

<blockquote>

请输入需要查找的数字:38

该数字为数组第10个元素

以上就是关于“C语言折半查找法如何使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注本站行业资讯频道。

标签:折半查找法-

抖音(Tiktok)是由北京字节跳动科技有限公司(ByteDance)孵化的音乐创意短视频社交网站。它于2016年9月20日上线,主要面向全年龄段的用户,尤其是...

飞极速为您提供高清在线电影、电视剧大全、动画片,综艺等,飞极速在线更新及时,播放速度快,给您带来最好的观影体验!飞极速在线,免费提供日本新番动漫、最新电影和最新...

《南华早报》(英语:South China Morning Post, SCMP)和星期日出版的《星期日南华早报》(英语:Sunday Morning Post...

什么是数理统计法?数理统计法的定义。数理统计法随着研究的深入,分析师们将不再仅仅依靠简单的比较和直观的分析来寻找答案。数理统计和计量经济学的理论和方法将会被越来越多地应用到行业分析中来。数理统计法这里介绍最常用的相关分析、一元线性回归和时间数列。数理统计法相关分析主要用于探索两个数量指标之间的依存关系,数理统计法比如行业产品的销售总量和销售价格之间的关系、行业发展速度与国民经济发展速度之间的关系等...

随着5G的商用,我们不断接到运营商的推销电话,说要升级5G,但是感觉4G已经足够了。真的很烦!另一方面,我们似乎越来越多地使用互联网。即使打电话,也会优先考虑微信语音电话,其次是流量需求大增,短信和电话锐减。我们迎来了一个新的时代,原来的手机套餐可能因为这个已经不适用了。我们面临的是换套餐的问题,也可以转号上网。换哪个合适,那么什么套餐合适呢?我们来看看三大运营商最便宜的手机套餐。▍互联网重度用户...

余额宝转出到账时间是多久?余额宝转出分为两种情况,分别是快速到账和普通到账,具体情况如下:【1】快速到账:当日转出,当日到账,预计是在2小时内到账的,最快可以实现实时到账。但是这种转出方式下单日单户限额1万元。【2】普通到账:这种情况是没有转出额度限制的,T日转出,T+1日24:00前到账,T日一般就是指基金交易日。而基金交易日一般就是指非节假日的周一到周五,如果碰上了节假日那么资金的到账时间就会...

TOP