#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int max;
int min;
}max_min_set;
max_min_set *MMS;
static int count=0;
int init(int **array)
{
int n,i;
while(1==scanf("%d",&n))
{
if(n > 0) break;
printf("n invalid!\n");
}
if(!(*array=(int*)malloc(n*sizeof(int)))) return 0;
if(!(MMS=(max_min_set*)malloc(((n+1)/2)*sizeof(max_min_set)))) return 0;
for(i=0;i<n;i++)
scanf("%d",(*array)+i);
return n;
}
void find_max_min(int *array,int n)
{
int i;
int mid=(n+1)/2;
for(i=0;i<mid;i++)
{
if(i==n/2)
{
MMS[i].max=array[i];
MMS[i].min=array[i];
}
else
{
if(array[i] > array[i+mid])
{
MMS[i].max=array[i];
MMS[i].min=array[i+mid];
}
else
{
MMS[i].max=array[i+mid];
MMS[i].min=array[i];
}
count++;
}
}
for(i=1;i<mid;i++){
if(MMS[i].max > MMS[0].max) MMS[0].max=MMS[i].max;
if(MMS[i].min < MMS[0].min) MMS[0].min=MMS[i].min;
count+=2;
}
}
int main()
{
int *num,n;
if((n=init(&num))==0) return 0;
find_max_min(num,n);
printf("max:%-3d,min:%-3d\n",MMS[0].max,MMS[0].min);
printf("count:%-3d\n",count);
return 0;
}
找最大最小值 C语言实现
4星 · 超过85%的资源 需积分: 15 168 浏览量
2011-09-16
13:25:05
上传
评论
收藏 7KB RAR 举报
WsHunTer
- 粉丝: 19
- 资源: 18