哈喽,又见面啦,第二篇博文,就随便记录点学习笔记吧,此刻我正在东莞常平这边,安静的在房间内study…(别扯淡,快点进入正题)

文章目录

##二分法介绍
在某些情况下,我们经常要在数组中查找特定的值,面对元素比较少的数组可以采用数组轮询的方式进行查找(即一个个比较),而在面对元素比较多的数组的时候,就不采用轮询的方式啦,效率太低了,这时我们可以采用二分法进行查找。

二分法又可分为递归查询轮询
##程序
环境:window7+VS2015
###轮询

/*轮询*/
int Find(int *arr,int Find_Value,int n)
{int Start = 0, End = n-1;//数组的起始&&结尾int Mid = 0;             //用于保存下标中间值Mid = (Start + End) / 2; //第一次二分,Mid=4while (Start<End&&arr[Mid]!=Find_Value){if (arr[Mid]>Find_Value)  //如果中间值大于要找的数,则说明要找的数处于数组的前半段{End = Mid - 1;       //更新数组的结尾}else if (arr[Mid] < Find_Value) //如果中间值小于要找的数,则说明要找的数处于数组的后半段{Start = Mid + 1;     //更新数组的起始}Mid = (Start + End) / 2; //再次二分if (Start > End) return -1;//比较结束if (arr[Mid] == Find_Value)//Get到了{return Mid;           //返回下标}}
}

======================================
###递归方式

/*递归*/
int Find_1(int *arr, int Find_Value, int n, int Start, int End)
{int  Mid;if (Start>End){return -1;}Mid = (Start + End) / 2;if (arr[Mid] == Find_Value) return Mid;if (arr[Mid]>Find_Value){return Find_1(arr, Find_Value, n, Start, Mid - 1);}else if (arr[Mid]<Find_Value){return Find_1(arr, Find_Value, n, Mid + 1, End);}
}

======================================
来,让我们一起来验证一下

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(int argc, char *argv[])
{int arr0[9] = { 0,11,22,33,44,55,66,77,88 };int arr1[9] = { 0,1,2,3,4,5,6,7,8 };if (Find(arr0,22,sizeof(arr0)/sizeof(arr0[0]))!=-1){printf("你要找的,他在数组的第%d位\r\n", Find(arr0,22,sizeof(arr0)/sizeof(arr0[0])));}else{printf("找不到你要找的\r\n");}if (Find_1(arr1, 5, sizeof(arr1) / sizeof(arr1[0]), 0, sizeof(arr1) / sizeof(arr1[0]) - 1) != -1){printf("你要找的,他在数组的第%d位\r\n", Find_1(arr1, 5, sizeof(arr1) / sizeof(arr1[0]), 0, sizeof(arr1) / sizeof(arr1[0])));}else{printf("并找不到你要找的\r\n");}printf("\r\n");system("pause");return 0;
}

##结果

【C language】C语言二分法查找相关推荐

  1. C语言二分法查找数组

    C语言二分法查找数组 要实现的功能如下 完整源代码实现如下 要实现的功能如下 采用二分法查找,若找到输出:数所在的下标,否则输出sorry 完整源代码实现如下 #include "stdio ...

  2. C语言——二分法查找一个数_数组

    C语言--二分法查找一个数_数组 问题描述: 针对一个按顺序排列的一维数组,用户输入一个数,如何辨别它是否存在?是数组中的第几位? 编程思想: 采用二分法,以最中间的数和用户输入的数进行比较,逐步缩小 ...

  3. c语言二分法查找次数,二分法查找

    二分法查找 算法:二分法查找适用于数据量较大,但是数据需要先排好序 (1)确定该区间的中间位置k (2)将查找的值T与array[k]进行比较.若相等,查找成功返回此位置:否则确定新的查找区域,继续二 ...

  4. c语言中的数组二分法排序程序,#C语言#二分法查找有序数组

    C语言的二分法,想必很多朋友都在初学时是一个难啃的骨头,因为这是必须掌握的最基础的一种算法.在这里我分享一下这个简单的#二分法#查找有序数组 #include int binary_search(in ...

  5. c语言二分法查找数组元素,c语言二分法如何实现查找数组元素

    c语言二分法实现查找数组元素的方法:1.递归算法,代码为[if(a[mid] == key) return mid]:2.非递归算法,代码为[while( left < right && ...

  6. C语言二分法查找详解

    二分法查找,也称折半法,是一种在有序数组中查找特定元素的搜索算法. 以一个案例来分析,二分法查找的思路如下: (1)首先,确定数组的中间下标mid(这里不用管整不整除,只要比较中间就可以),将mid对 ...

  7. c语言程序二分法求解,C语言二分法查找算法(附带源码)

    顺序查找是从第一个数据开始比较,直到找到目标数据.当数据量较大时,顺序查找的效率就会降低. 将数据进行排序以后,我们就可以使用另一种更加有效的查找方法:二分法查找.二分法查找的思想是,对于已经按照从小 ...

  8. C语言 二分法查找与递归二分法查找

    1.二分法查找 1.算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序 2.主要思想是: (设查找的数组区间为arraylow, high]) 确定该区间的中间位置K.将查找的值T与array ...

  9. 算法-C语言-二分法查找

    //二分法查找 #include<stdio.h> //定义一个函数存放查找算法 int binsearch(int x,int a[],int n) {int low,high,mid; ...

最新文章

  1. flutter 如何自定义一个loadmore / 加载更多
  2. 人生百味,浓缩到最后就是一个淡字
  3. 学习Dubbo 影院模块 所得所获?
  4. matlab连通区边界_Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI...
  5. 面试稳了!网易资深工程师详解运维面经!
  6. 三角数数列与杨辉三角
  7. easyui的tree节点的获取和选中
  8. mybatis-generator生成的mapper中的
  9. Java clone克隆方法 --深拷贝--浅拷贝 --原型模型
  10. js根据银行卡号判断属于哪个银行,并返回银行缩写及银行卡类型--bin识别
  11. chm文件打不开的解决办法
  12. 计算机任务栏隐藏恢复,电脑任务栏不见了怎么办?如何找回?
  13. idea 调节背景护眼_IDEA 护眼色设置 背景行颜色取消等设置
  14. Java实现用汉明距离进行图片相似度检测的
  15. 关闭和打开445端口
  16. 如何让excel中一部分表格显示但不打印?
  17. 国考面试计算机专业知识,2016年国家公务员面试银监会-计算机专业之网络基本知识(3)...
  18. 【高考志愿填报-让你领先在起跑线上】学长给学弟学妹七点建议,字字珠玑!
  19. IDA7.7PJ版本
  20. RGB颜色详细标号 用彩虹色装饰CSDN告示栏 - 酷炫

热门文章

  1. shell提示符的个性化设定
  2. Android MIPI转LVDS显示屏调试之--- SD65DSI84概述(2)
  3. 阿里重磅发布大规模图神经网络平台AliGraph,架构算法解读
  4. WordPress更新时提示无法连接到FTP服务器的解决方案
  5. [Firebug]用来武装Firebug的十三款Firefox插件
  6. getLastSql()用法
  7. cordova 发布 android release 签名打包
  8. 用mansard对cell的子控件设置约束,并且自动计算cell高度的问题,ios7警告
  9. Drupal8系列(五):主题制作之搭建框架-Ubuntu 14.04 LTS
  10. vim自定义配置之autoComplPop设置