采用了函数封装的形式包含了求最大值最小值和冒泡升序降序的算法,代码严谨,移植性强,甚至可以当做工具脚本来用,非常方便!!^-^
#include <stdio.h>
#include <math.h>
/*算法模式*/
typedef enum
{
MAX_MODE=0,//求最大值
MIN_MODE, //求最小值
SORT_MODE_DOWN,//降序
SORT_MODE_UP,//升序
}result_mode_t;
int target_data[]={2,25,24567,897560,999,8};//测试目标数据
//int output_data[(sizeof(target_data)/sizeof(int))]={0};
/*
**int *experiment_data 输入的数据
**int data_length 数据长度
**result_mode_t result_mode要使用的模式
*/
int Hqx_Comparison_Algorithm(int *experiment_data,int data_length,result_mode_t result_mode);
int main()
{
printf(" author:无线IIC \n code type:algorithm\n version:V1.0\n creat date:2023.04.14\n");
/*测试代码*/
int i;
Hqx_Comparison_Algorithm(target_data,sizeof(target_data)/sizeof(int),SORT_MODE_UP);
for(i=0;i<(sizeof(target_data)/sizeof(int));i++)
{
printf("test_data_%d=%d\n",i,target_data[i]);
}
printf("user_test=%d\n",Hqx_Comparison_Algorithm(target_data,sizeof(target_data)/sizeof(int),MIN_MODE));
return 0;
}
/*求最大值最小值及升降序的算法*/
int Hqx_Comparison_Algorithm(int *experiment_data,int data_length,result_mode_t result_mode)
{
int i,j,max,min,temp=0;
if(result_mode==SORT_MODE_DOWN)//降序
{
for(i=0;i<data_length;i++)
{
for(j=i+1;j<data_length;j++)
{
if(experiment_data[i]<=experiment_data[j])
{
temp=experiment_data[j];
experiment_data[j]=experiment_data[i];
experiment_data[i]=temp;
}
}
}
printf("result_mode is SORT_MODE_DOWN\n");
}
else if(result_mode==SORT_MODE_UP)//升序
{
for(i=0;i<data_length;i++)
{
for(j=i+1;j<data_length;j++)
{
if(experiment_data[i]>=experiment_data[j])
{
temp=experiment_data[j];
experiment_data[j]=experiment_data[i];
experiment_data[i]=temp;
}
}
}
printf("result_mode is SORT_MODE_UP\n");
}
else
{
max=experiment_data[0];
min=experiment_data[0];
for(i=1;i<data_length;i++)
{
if(experiment_data[i]>=max)
{
max=experiment_data[i];
}
else if(experiment_data[i]<=min)
{
min=experiment_data[i];
}
}
if(result_mode==MAX_MODE)
{
printf("result_mode is MAX_MODE\n");
return max;
}
if(result_mode==MIN_MODE)
{
printf("result_mode is MIN_MODE\n");
return min;
}
}
return 0;
}