二分查找法思想:

二分查找法又称夹逼法,二分查找法使用的基本条件是一个有序的数组,通过从数组头部和尾部折半,判断要查找的数和mid位置数值的大小,来判断要查找的数实在那一半,之后继续折半查找,直至找到这个数或者最后小端大于大段则结束查找

二分查找法代码:

#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXLEN 100//创建数组
void createArr(int arr[],int len)
{int i=0;srand((unsigned int)time(NULL));for(i=0;i<len;i++){arr[i]=rand()%MAXLEN;}return ;
}//打印数组
void printArr(int arr[], int len)
{int i=0;for(i=0;i<len;i++){printf("%d=%d\n",i+1,arr[i]);}return ;
}//选择排序代码
void select_sort(int arr[],int len)
{int i=0,j=0;for(i=0;i<len;i++)//控制每次从数组哪个位置开始执行循环,第一次从第一个元素开始,之后每次向后移动一个元素{for(j=i+1;j<len;j++)//负责未排序部分第一个元素与后面元素之间的比较,不满足排序规则时交换两个元素{if(arr[j]<arr[i]){int tem=arr[i];arr[i]=arr[j];arr[j]=tem;}}}return ;
}void  binary_chop(int arr[],int len,int num)
{int min=0;int max=len-1;while(min<=max){int mid=(max-min)/2+min;if(arr[mid]<num)min=mid+1;else if(arr[mid]>num)max=mid-1;else{cout<<"找到"<<num<<endl;return ;}}cout<<"数组中没有"<<num<<endl;return ;
}int main(void)
{int number;printf("Hello World!\n");int arr[MAXLEN]={0};createArr(arr,MAXLEN);select_sort(arr,MAXLEN);printArr(arr,MAXLEN);cout<<"请输入要查找的数:"<<endl;cin>>number;binary_chop(arr,MAXLEN,number);return 0;
}

欢迎关注问我团队公众号:

二分查找法的基本思想与实现代码相关推荐

  1. 【经典排序算法】二分查找法 (动图演示 + C 语言代码实现)

    [经典排序算法]二分查找法 (动图演示 + C 语言代码实现)   

  2. 算法(一):二分查找法

    算法基础: 一.大O表示法: 指示算法的速度有多快,用于指出随数量的增大,算法的所需步骤增加的速度,常见的大O运行时间(时间复杂度): O(1)表示常数阶时间复杂度 O(log n),也叫对数时间复杂 ...

  3. Java实现二分查找法

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表 ...

  4. 小饶学编程之JAVA SE第一部分——二分查找法

    二分查找法 一.算法描述 二.算法原理 三.算法实现 四.总结 一.算法描述 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结 ...

  5. 通过C语言实现二分查找法

    Hellow,我是jack,今天给大家分享的是C语言实现二分查找.话不多说,让我们直接进入正题. 首先让我们了解下什么是二分查找法 基本思想是将n个元素分成大致相等的两部分,取a [n/2]与x做比较 ...

  6. C语言中的二分查找法

    ...cpp 二分查找法也称折半查找法,是一种有序的查找方法,时间复杂度为log以2为底n的对数.如果是无序的则要先进行排序操作.基本思想是:把要查找的值和中间元素比较.例如在1 2 3 4 5 6 ...

  7. 【算法学习笔记】二分查找法

    二分查找法 二分查找的本质就是分治法,小时候有过这么一种猜数字的游戏,你在心中想一个大于0小于100的数字,然后我来提问,你只用回答是或者不是,比如"你想的数字比50大吗" 你说不 ...

  8. 二分查找法的递归和非递归实现(C++)

    文章目录 1.二分查找法思想 2.算法使用前提 3.递归实现(C++) 4.非递归实现(C++) 1.二分查找法思想 折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的 ...

  9. LeetCode 69. x 的平方根:二分查找法实现自定义的函数:x 的平方根

    LeetCode 69. x 的平方根:二分查找法实现自定义的函数:x 的平方根 题目描述 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型 ...

最新文章

  1. Memcached安装和基本使用
  2. PHPCMS v9 二次开发_验证码结合Session开发
  3. LeetCode 709:To Lower Case
  4. 如何在局域网内查找病毒主机
  5. 反向Z(Reversed-Z)的深度缓冲原理
  6. -又见GCD -- ACM解决方法
  7. 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?
  8. 前端学习(586):在元素中动态添加类与伪类
  9. [你必须知道的.NET]第二十九回:.NET十年(上)
  10. LeetCode 2140. 解决智力问题(动态规划)
  11. 苹果笔记本能不能用python_“苹”除了苹果还能组哪些词?苹组词,释义及造句汇总!...
  12. c1和c2语言水平,为什么驾校不建议考C2,驾驶证C1和C2的区别
  13. C#图解教程 第七章 类和继承
  14. java的前台与后台
  15. oracle数据库创建表空间和表临时空间
  16. 理解Python中的装饰器
  17. Ubuntu 安装 gcc-4.9.3-64-gnu
  18. ssm-学子商城-项目第五天
  19. eplan2.7在win10安装教程
  20. 人行发布2018年度银行科技发展获奖名单

热门文章

  1. Linux 平台下 误删 oracle 数据文件的恢复方法
  2. Lattice Diamond关于原语的使用
  3. Retrofit 通过刷新头部Token解决token过期
  4. 基于C#弹幕类射击游戏的实现——(四)玩家的战机
  5. MFC中dlg.DoModal()返回-1
  6. 独立开发变现周刊(第83期):建在Stripe上的应用,年收入70万美元
  7. 对标 Amazon Go,这家初创企业盯上了国内无人商店市场
  8. 数据结构——树 (知识点思维导图)
  9. 股票成交量和成交笔数解释
  10. “春城”昆明郁金香盛开 万紫千红引游人