当前位置: 首页 > article >正文

二分法(c语言)

一个典型算法

算法:当数据量很大时宜采用此方法。使用前提:使用二分查找时,数据是排好序的。

基本思想:假设数据是升序的,对于给定的n,从序列的中间位置mid开始比较,

如果数组为arr[10],则mid=(0+9)/2; mid 为数组的角标;

如果 当前位置arr[mid]等于n,则查找成功;

若n小于arr[mid],则在数组的前半段查找,arr[left,mid-1];

若n大于arr[mid],则在数组的后半段查找,arr[mid+1,ringht];

然后再重新结算mid的值,比如 n小于arr[mid],则第二次mid =(left+mid-1)/2;

然后再次比较;重复,直到找到n为止,或者找不到。

#include <stdio.h>void EF(int arr[],int sz,int n){  //如果查找到了则输出YES;int left=0;int right=sz-1;while(left<=right){int mid=(left+right)/2;if(n<arr[mid]) right=mid -1;else if(n>arr[mid]) left=mid+1;else {printf("YES\n");break;}}if(left>right) printf("NO\n"); //没查找到,跳出循环,输出NO;
}
int main()
{int n,m;  int i,j; scanf("%d %d",&n,&m);int arr[n];int arr2[m];for(i=0;i<n;i++){scanf("%d",&arr[i]);}for(i=0;i<m;i++){scanf("%d",&arr2[i]);EF(arr,n,arr2[i]);}return 0;
}

http://www.lryc.cn/news/2413219.html

相关文章:

  • 免费PHP空间整理
  • Microsoft .NET Framework v4.7.1 离线安装包应用程序
  • html caption属性,html元素caption标签的使用方法及作用
  • 汤姆·克鲁斯 - 电影全集
  • 帧中继技术介绍-ielab
  • 塞尔达传说gba_《塞尔达传说缩小帽》是系列一年级生?,回忆众多玩友的启蒙之作...
  • IT技术的发展是创造新世纪还是毁灭这个世界?
  • 使用Eclipse开发J2EE项目详解
  • 史上最全的CentOS常用软件安装和启动步骤【包含Docker安装】_centos7
  • 电脑系统进程大解剖
  • 数字信号处理的学习资源
  • 怎么搭建自己的网站?详细教程
  • ARCGIS9.3安装
  • rk修改launcher_RK launcher V 0.41 官方版
  • Flex与java通信
  • 国内IT公司速查手册
  • php开发his软件,HIS系统(his管理系统)V3.0.1 官网版
  • tftpd32服务器软件在Windows与linux 下的文件传输
  • 【源码】二分法及MATLAB实现
  • 数学速算法64种口诀_【收藏】加减乘除速算法,为孩子打开一个神奇有趣的数学世界!...
  • 详解Wavedev2模式的音频驱动
  • 常见的十五种Java开发工具
  • unity3d_webplayer_缓存文件结构
  • 红帽linux7.2安装教程,RHEL 6.2安装(超级详细图解教程) | 系统运维
  • 网吧服务器点歌系统,网吧点歌系统_网吧语音大师_蓝宝石语音_网吧点歌系统_蓝宝石呼叫网管_hylbs.com...
  • Code Craft(编程匠艺)之代码的生命(一)
  • 【推荐】10个网站分类目录提交地址
  • 51单片机学习——非标协议外设——LCD1602液晶显示屏
  • Android 开发的学习指南
  • MFC读写ini配置文件(WritePrivateProfileString,GetPrivateProfileString,GetPrivateProfileInt)