C语言 递归函数实现二分查找
C语言 递归函数实现二分查找
二分查找
#include<stdio.h>
int binary(int arr[], int min, int max, int key)
//min, max 分别表示数组的最左和最右的边界,key需要查找的数
//二分查找必须为有序数组
{int mid = ( min + max ) / 2; //数组中间值的下标if(key == arr[mid]) //如果key 等于 arr数组中间值,就返回该值的下标mid{return mid;}if(key < arr[mid]) //如果key在数组左边部分,就继续调用binary函数,并且把max 移位到mid - 1处{return binary(arr,min, mid - 1,key);}if(key > arr[mid]) //如果key在数组右边部分,继续调用binary函数,并且把min移位到mid + 1处{return binary(arr,mid + 1,max,key);}else // 如果在数组中查找不到key值,则返回 -1{return -1;}
}int main()
{int arr[] = {1, 3, 5, 7, 9, 10, 13,14, 17, 22, 33, 56, 78};int len = sizeof(arr) / sizeof(int); //获取数组长度int key = 33; //查找的值int ret = binary(arr,0,len -1,key); //传参数,数组arr,数组最左边min = 0,最右边max = len(数组最右边)printf("%d的下标是:%d\n",key,ret);return 0;
}
执行结果
C语言 递归函数实现二分查找相关推荐
- 数据结构源码笔记(C语言):二分查找
//实现二分查找的算法#include<stdio.h> #include<malloc.h> #include<malloc.h>#define MAXL 100 ...
- c语言折半查找递归程序,C语言数据结构中二分查找递归非递归实现并分析
C语言数据结构中二分查找递归非递归实现并分析 前言: 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高.因此较为受我们追捧.其实二分查找算法,是一个很经典的算法.但是呢,又容易写错.因为总是考 ...
- 二分查找算法举例说明C语言,C语言快速排序与二分查找算法示例
本文实例讲述了C语言二分排序与查找算法.分享给大家供大家参考,具体如下: 题目:首先产生随机数,再进行快速排序,再进行二分查找. 实现代码: #include #include #include vo ...
- 递归函数与二分查找算法
1. 了解思想 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67, ...
- c语言对随机数进行快速排序,C语言快速排序与二分查找算法示例
本文实例讲述了C语言二分排序与查找算法.分享给大家供大家参考,具体如下: 题目:首先产生随机数,再进行快速排序,再进行二分查找. 实现代码: #include #include #include vo ...
- C语言中的二分查找法
...cpp 二分查找法也称折半查找法,是一种有序的查找方法,时间复杂度为log以2为底n的对数.如果是无序的则要先进行排序操作.基本思想是:把要查找的值和中间元素比较.例如在1 2 3 4 5 6 ...
- 【C语言】用二分查找法在有序数组中查找具体的某个数
当给定一个有序数组,而我们要在这个数组中查找某个数时,我们常常用从头到尾的排除法遍历寻找,但是这种方式及其低效,n个数的数组最差要找n次.而后面我们会知道,二分查找法则高效的多,最差要找log以2为低 ...
- C语言算法——实现二分查找
#include <stdio.h> int main() {int search(int *p,int len,int x); //函数的声明int a[] = {1,2,3,5,7,8 ...
- c语言折半查找法程序,C语言基础:二分查找法演示代码
2015-11-07 06:30:02 阅读( 276 ) #include int binary_search(int array[], int value, int size) { int fou ...
最新文章
- linux统计文件的个数
- 微软亚洲研究院副院长刘铁岩:以计算之矛攻新冠之盾
- Ubuntu上手动安装sbt
- Node.js实践第一天
- Android 省份城市搜索,android - 非常不错的 城市省份的选择组件: citypicker
- selenium自动化测试_Selenium测试可实现有效的测试自动化
- sharepoint ECMAScript对象模型系列
- 苹果面试8大难题及答案
- jdk1.8要安装什么mysql_Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解
- observable java_Observable基本用法(RxJava)
- 你会换吗?报告称将有大批iPhone用户升级苹果5G新机
- 10 个用于 Linux 的开源轻量级 Web 浏览器
- 0804Python总结-单继承,多继承,菱形继承,__init__魔术方法(构造方法)
- 思科模拟器配置-生成树协议与链路聚合负载均衡
- 高三老师给大一学生的一封信
- 【VUE】实现分页组件
- java 微信时间戳转换工具_微信小程序实现时间戳格式转换
- 【雷丰阳-谷粒商城 】课程概述
- TextOut字体设置
- xPC信号采集和分析(2)