#include <assert.h>
void h(int* a, int leng, int& max, int& min)
{
assert(leng > 0);
if (leng==2)
{
min = (a[0]<a[1])?a[0]:a[1];
max = (a[0]<a[1])?a[1]:a[0];
return;
}
else if (leng==1)
{
min = a[0];
max = a[0];
return;
}
else
{
int min1 = 0, min2 = 0;
int max1 = 0, max2 = 0;
h(a, leng/2, max1, min1);
h(a+leng/2, leng-leng/2, max2, min2);
min = min1<min2?min1:min2;
max = max1>max2?max1:max2;
return;
}
return;
}
int main(void)
{
int a[] = {1,2,3,4,5,6};
int min = 0, max = 0;
h(a, sizeof(a)/sizeof(a+0), max, min);
printf("min is %d, max is %d", min, max);
return 0;
}
用递归二分法实现同时获得一个数组内的最大最小值
最新推荐文章于 2021-11-02 20:11:57 发布