首页 > 其他分享 >C语言实现查找一组数中的最大和最小值

C语言实现查找一组数中的最大和最小值

时间:2023-02-01 21:37:05浏览次数:45  
标签:tmp index int step else 最小值 C语言 uint32 数中


查找一组数中的最大、最小值


/**
* 查找一组数中的最大数
* @param nums 数组指针
* @param step sizeof(type)
* @param n 该组数中有几个数
* @return 未找到返回-1,找到返回该数的索引
*/
int findMax(const void *nums, int step, int n)
{
int index = -1;
uint32_t i = 0;
uint32_t maxVal = 0;
uint8_t *p = (uint8_t *)nums;
uint32_t tmp = 0;

if(step == 1)
maxVal = *((uint8_t *)(p));
else if(step == 2)
maxVal = *((uint16_t *)(p));
else if(step == 4)
maxVal = *((uint32_t *)(p));
else
return index;

for(i = 0; i != n; i++)
{
if(step == 1)
tmp = *((uint8_t *)(p + i * step));
else if(step == 2)
tmp = *((uint16_t *)(p + i * step));
else if(step == 4)
tmp = *((uint32_t *)(p + i * step));
else
return -1;

if(maxVal < tmp)
{
maxVal = tmp;
index = i;
}
}
return index;
}

/**
* 查找到一组数中的最小数
* @param nums 数组指针
* @param step sizeof(type)
* @param n 该数组有几个数
* @return 未找到返回-1,找到返回该值索引
*/
int findMin(const void *nums, int step, int n)
{
int index = -1;
uint32_t i = 0;
uint32_t minVal = 0;
uint8_t *p = (uint8_t *)nums;
uint32_t tmp = 0;

if(step == 1)
minVal = *((uint8_t *)(p));
else if(step == 2)
minVal = *((uint16_t *)(p));
else if(step == 4)
minVal = *((uint32_t *)(p));
else
return index;

for(i = 0; i != n; i++)
{
if(step == 1)
tmp = *((uint8_t *)(p + i * step));
else if(step == 2)
tmp = *((uint16_t *)(p + i * step));
else if(step == 4)
tmp = *((uint32_t *)(p + i * step));
else
return -1;

if(minVal >= tmp)
{
minVal = tmp;
index = i;
}
}
return index;
}

C语言实现查找一组数中的最大和最小值_查找算法


标签:tmp,index,int,step,else,最小值,C语言,uint32,数中
From: https://blog.51cto.com/u_15950551/6031857

相关文章

  • C语言基础:结构体对齐规则与0字节数组
    C语言基础:结构体对齐规则与0字节数组不同的编译器和系统默认的对齐规则会有差异,这里我使用的win32的MinGWC语言结构体一般是默认四字节对其的。结构体对其规则一般的,C语言结......
  • C语言&C++
    C语言和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,不管什么人想......
  • 初识C语言1
    #include<stdio.h>//standardinputoutputintmain()//主函数程序的入口,有且仅有一个{printf("helloworld");//printfunction打印函数return0;}C语言中的变量类型:char......
  • C语言练习------打字游戏
    1打字游戏(1)随机函数A:srand((unsigned)time(NULL));以当前时间为准,设置随机种子。注意:此函数,在每次开始游戏后调用一次即可。B:ch=rand();注意:rand()函数,每调用一次,产生一......
  • C语言-printf函数
    转换字符参数类型;转换结果cchar;字符dint;有符号十进制整数i同上edouble;以指数形式输出单、双精度浮点数(小写e)E同上(大写E)fdo......
  • C语言中return和exit的区别
    转载自:http://jszx.cuit.edu.cn/NewsCont.asp?bm=00&type=888&id=20050 1.exit用于在程序运行的过程中随时结束、终止程序,exit的参数是返回给OS的。main函数结束时(使用r......
  • 判断大小端--C语言版
    首先,什么是大小端存储方式?大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的......
  • 嵌入式开发中一些少见的C语言用法
    使用STM32开发的朋友不知道是否有发现过这样的一些宏定义?如下:#ifdefined(__CC_ARM)#pragmaanon_unions#endif看到上面的语句一开始确实搞不懂为什么要写这些东西,通过上......
  • 重学C语言
    /*Add(intx,inty)//自定义加法函数Add{//函数内容\函数体intz=x+y;returnz;}intmain(){intnum1=10;intnum2=20;intsum=0;inta=100;in......
  • 面试题 03.02. 栈的最小值
    1.题目请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。3.代码classMinStack{......