c语言二分法查找数组元素,c语言二分法如何实现查找数组元素
c语言二分法实现查找数组元素的方法:1、递归算法,代码为【if(a[mid] == key) return mid】;2、非递归算法,代码为【while( left < right && a[mid] != key )】。
本教程操作环境:windows7系统、c99版本,DELL G3电脑。
c语言二分法实现查找数组元素的方法:
递归算法#include
//二分法实现数组查找
//
int recurbinary(int *a, int key, int low, int high)
{
int mid;
if(low > high)
return -1;
mid = (low + high)/2;
if(a[mid] == key) return mid;
else if(a[mid] > key)
return recurbinary(a,key,low,mid -1);
else
return recurbinary(a,key,mid + 1,high);
}
非递归算法int binary( int *a, int key, int n )
{
int left = 0, right = n - 1, mid = 0;
mid = ( left + right ) / 2;
while( left < right && a[mid] != key )
{
if( a[mid] < key ) {
left = mid + 1;
} else if( a[mid] > key ) {
right = mid - 1;
}
mid = ( left + right ) / 2;
}
if( a[mid] == key )
return mid;
return -1;
}
int main(void)
{
int a[10] = {2,4,6,8,10,12,14,16,18,20},t,k,f;
scanf("%d",&t);
k = recurbinary(a,t,2,20);
f = binary(a,t,10); //非递归算法
if(k == -1){
printf("不存在此数\n");
}else{
printf("%-5d是数组第%d个元素\n%-5d数组的第%d个元素",k,k+1,f,f+1);
}
return 0;
}【相关学习推荐:C语言教程视频】
c语言二分法查找数组元素,c语言二分法如何实现查找数组元素相关推荐
- 力扣(LeetCode)215. 数组中的第K个最大元素(C语言)
一.环境说明 本文是 LeetCode 215题 : 数组中的第K个最大元素,使用c语言实现. 快速选择.查找无序数组的利器! 测试环境:Visual Studio 2019. 二.代码展示 void ...
- c语言中的字节和元素,C语言指向数组元素的指针
指向数组元素的指针和运算法则 所谓指向数组元素的指针,其本质还是变量的指针.因为数组中的每个元素,其实都可以直接看成是一个变量,所以指向数组元素的指针,也就是变量的指针. 指向数组元素的指针不难,但很 ...
- C语言试题五之计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和
1.题目 请编写函数function,它的功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和 例子:若我们main函数给出double a[9] = {1, 2, 3, 4, ...
- c语言定义数组a10 指定各元素,C语言填空题.doc
C语言填空题.doc 二.填空题1.C 语言只有 32 个关键字和 9 种控制语句.2.每个源程序有且只有一个 main 函数,系统总是从该函数开始执行 C 语言程序. 3.C 语言程序的注释可以出现 ...
- 动态二维数组外圈元素值的和_C语言 | 用指向元素的指针变量输出二维数组元素的值...
例33:有一个3*4的二维数组,要求用C语言实现指向元素的指针变量输出二维数组个元素的值. 解题思路:二维数组的元素时整型的,它相当于整型变量,可以用int*型指针变量指向它.二维数组的元素在内存中是 ...
- c语言数组相同字符主元素,C语言数组考点归纳
C语言数组考点归纳 下面是百分网小编为大家收集的C语言数组考点归纳,欢迎借鉴学习! 9.1 一维数组的定义.初始化和引用 1.一维数组的定义方式为: 类型说明符 数组名[常量表达式] (1)数组名的命 ...
- c语言求比平均值大的元素,c语言 10个元素的数组求平均值并输出比平均值大的数...
[c语言]编写程序,求数组a中前n个元素的最大值max.最小值min及平均值avg. 是前n个元素么?main(){inti=n,sum=0;max=a[0];min=a[0];for(i=0;ia[ ...
- c语言找出一个数组中出现次数最多的那个元素,c语言找出数组中出现次数最多地那个元素...
matlab中如何找出不同维度矩阵出现次数最多的数组并记录其个数 首先是胞矩阵中的序列问题,不妨假设AA{1}是一个多行两列的数据,AA{2}同例.程序如下clcclearallAA{1}=[12;2 ...
- LeetCode 540 Single Element in a Sorted Array 在分类好的数组里寻找单个元素 C语言 异或的巧妙使用
540. Single Element in a Sorted Array 原题 C语言题解 原题 You are given a sorted array consisting of only in ...
- c语言指针引用数组元素,c语言——数组指针和通过指针引用数组元素的方法总结...
1.数组指针:即指向数组的指针 那么, 如何声明一个数组指针呢? int (* p)[10]; /*括号是必须写的,不然就是指针数组:10是数组的大小*/ 1 拓展:有指针类型元素的数组称为指针数组. ...
最新文章
- 2019-4-25 html学习笔记
- php实现按时间排序_按时间排序的问题?
- ubuntu20 编译dpdk错误 -Werror=address-of-packed-member
- java中使用jython_将Jython嵌入到您的Java代码库中
- bmp调色板颜色信息重复_如何更改 Linux 终端颜色主题 | Linux 中国
- MySQL(7)索引
- BZOJ5251 八省联考2018劈配(网络流)
- 深入理解cookie
- Ubuntu16.04编译Android5.1源码
- java对象复制_Java对象的深层复制与浅层复制
- SQL还原数据库剔除占用
- 干电池很不经用,比充电电池差多了
- CAD填充技巧:填充图案
- Linux内核参考链接与书籍
- 一键生成App图标所有尺寸的三个酷站分享
- Android模仿新浪微博(启动界面登陆界面)
- bzoj3384[Usaco2004 Nov]Apple Catching 接苹果*bzoj1750[Usaco2005 qua]Apple Catching*
- UNCTF2022-公开赛-MISC-部分WriteUp
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
- windows server2012R将域名和访问的网址绑定