C语言算法之数据比较(冒泡)

采用了函数封装的形式包含了求最大值最小值和冒泡升序降序的算法,代码严谨,移植性强,甚至可以当做工具脚本来用,非常方便!!^-^ 

#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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值