當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]有一個很基礎(chǔ)的算法在做嵌入式開發(fā)中經(jīng)常會使用到,那就是找最值,最常見的是以下兩個宏: #define max(a,b) ((a) > (b) ? (a) : (b)) #define min(a,b) ((a) < (b) ? (a) : (b)) max和min宏分別比較兩個值誰大誰小,然后予以返回,很簡單。 但如果是比較多個

有一個很基礎(chǔ)的算法在做嵌入式開發(fā)中經(jīng)常會使用到,那就是找最值,最常見的是以下兩個宏:
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))
max和min宏分別比較兩個值誰大誰小,然后予以返回,很簡單。

但如果是比較多個數(shù)據(jù)的數(shù)值,我們就需要對數(shù)組里的元素進(jìn)行比較了,來看看程序?qū)崿F(xiàn):

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
//找數(shù)組的最小值 
static u32 find_buffer_min(u32 buffer_value_min,u32 size,u32 *buffer)
{
u8 count = 0 ; 
//先設(shè)置一個比較的范圍值
u32 min = buffer_value_min ;
//遍歷數(shù)組size個字節(jié) 
for(count = 0 ; count < size ; count++)
{
//比較當(dāng)前數(shù)組的索引值是否小于當(dāng)前設(shè)定的最小值 
//如果是的話,將該值賦值給min,依次通過for循環(huán)遍歷,直到找到最小值 
if(buffer[count] < min)
min = buffer[count];
}
//返回最小值 
return min ; 
}
//找數(shù)組的最大值 
static u32 find_buffer_max(u32 buffer_value_max,u32 size,u32 *buffer)
{
u8 count = 0 ; 
u32 max = buffer_value_max ;
//遍歷數(shù)組size個字節(jié) 
for(count = 0 ; count < size ; count++)
{
//比較當(dāng)前數(shù)組所在的索引值是否大于當(dāng)前設(shè)定的最大值 
//如果是的話,將該值賦值給max,依次通過for循環(huán)遍歷,直到找到最大值 
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 ; 
運行結(jié)果:


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉