您的位置:首页 > 理论基础 > 数据结构算法

数据结构(C)---分治法求最大值最小值

2014-05-15 18:57 141 查看
#include <stdio.h>

int main()

{

void max_min( int s[] , int *max ,int *min);

int max , min ;

int n;

scanf("%d" ,&n);

int num
;

while( n-- )

{

scanf("%d" , &num[i]);

}

max_min(num , &max , &min);

printf("max=%d , min=%d" , max,min);

return 0;

}

void max_min( int s[] , int *max ,int *min)

{

int max1 , min1 , max2 , min2;

if(sizeof(s)/sizeof(int)==2) //判断数据个数 若数据个数是2个 那么就直接进行比较

{

if(*s>*(s+1))

{

*max=*s;

*min =*(s+1);

}else{

*max=*(s+1);

*min =*s;

}
}else{ //数据个数大于2个 将数据分为2组 进行递归调用

max_min(s , &max1, &min1); //数据组1

max_min(s+sizeof(s)/sizeof(int)/2 , &max2 , &min2); //数据组2

if(max1>max2)

{

*max=max1;

}else{

*max=max2;

}

if(min1>min2)

{

*min=min2;

}else

*min=min1;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: