利用分治法求一组数据中最大的两个数和最小的两个数。

这是一个C语言程序,通过分治法找出一组数据中最小的两个数(min1和min2)和最大的两个数(max1和max2)。程序首先初始化一个包含10个整数的数组,然后调用max_min函数进行处理。在max_min函数中,根据数组元素数量,分别处理只有一个元素、两个元素以及多个元素的情况,找到最小和最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用分治法求一组数据中最大的两个数和最小的两个数。

在这里插入代码片

#include<stdio.h>
#define N 10

void max_min(int *a,int m,int n,int *min1,int *min2,int *max1,int *max2);

int main(void)
{
int a[N]={1,3,4,5,34,7,9,6,43,21};
int min1,min2;
int max1,max2;
max_min(a,0,N-1,&min1,&min2,&max1,&max2);//这四个参数的大小关系为 min1<min2<max2<max1
printf(“min1=%d min2=%d\n max1=%d max2=%d\n”,min1,min2,max1,max2);
return 0;
}

void max_min(int *a,int m,int n,int *min1,int *min2,int *max1,int *max2)
{
int lmin1,lmin2,lmax1,lmax2;
int rmin1,rmin2,rmax1,rmax2;
int mid;

if(m==n)//分治子数组中只有一个数
{
*min1=*min2=*max1=*max2=a[m];
}

else//分治子数组中不止一个数
if(m==n-1)//分治子数组中仅有2个数
{
if(a[m]<a[n])
{
*min1=a[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值