前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言从数组里找最大最小值

C语言从数组里找最大最小值

作者头像
杨源鑫
修改2019-07-05 16:55:06
3.4K0
修改2019-07-05 16:55:06
举报
文章被收录于专栏:嵌入式开发圈嵌入式开发圈

有一个很基础的算法在做嵌入式开发中经常会使用到,那就是找最值,最常见的是以下两个宏:

代码语言:javascript
复制
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))

max和min宏分别比较两个值谁大谁小,然后予以返回,很简单。

但如果是比较多个数据的数值,我们就需要对数组里的元素进行比较了,来看看程序实现:

代码语言:javascript
复制
find_buffer_max_min.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define NR(x) (sizeof(x)/sizeof(x[0]))
#define u32 unsigned int 
#define u8  unsigned char
//找数组的最小值 
static u32 find_buffer_min(u32 buffer_value_min,u32 size,u32 *buffer)
{
u8 count = 0 ; 
//先设置一个比较的范围值
u32 min = buffer_value_min ;
//遍历数组size个字节 
for(count = 0 ; count < size ; count++)
{
//比较当前数组的索引值是否小于当前设定的最小值 
//如果是的话,将该值赋值给min,依次通过for循环遍历,直到找到最小值 
if(buffer[count] < min)
min = buffer[count];
}
//返回最小值 
return min ; 
}
//找数组的最大值 
static u32 find_buffer_max(u32 buffer_value_max,u32 size,u32 *buffer)
{
u8 count = 0 ; 
u32 max = buffer_value_max ;
//遍历数组size个字节 
for(count = 0 ; count < size ; count++)
{
//比较当前数组所在的索引值是否大于当前设定的最大值 
//如果是的话,将该值赋值给max,依次通过for循环遍历,直到找到最大值 
if(buffer[count] > max)
max = buffer[count];
}
//返回最大值 
return max ; 
}
int main(void)
{
int i = 0 ;
int buffer[10] = {11111,45465,5454,11211,45778,21144,854,12347,12347,8898};
int min = find_buffer_min(32767,NR(buffer),buffer);
int max = find_buffer_max(32767,NR(buffer),buffer);
printf("min:%d  max:%d\n",min,max);
return 0 ; 
} 

运行结果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式开发圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档