在峰值中找最大峰值

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:22:06
1.定义函数TopPoints。
函数原型: int TopPoints(int d[],int n)
功能说明: 计算数组d中峰值的个数,并返回最大的峰值。
参数说明: d 数组的起始地址。
n 数组d中数据的个数(n>2)。
返回值: 数组d中最大的一个峰值的个数(d中不止一个峰值)。
说明: 若数组成员d[i]中的数据既大于它的前一个数据d[i-1],也大于它的
后一个数据d[i+1],则d[i]是数组内的一个峰值。
例:设数组data中前6个数据如下:
100 76 83 58 86 72
则该数组的6个数据内有2个峰值(如上带下划线的数据),因此,函数调用
TopPoints(data,6)
的返回值应该是86

#define IS_PEAK(ptr) \
(*ptr > *(ptr-1) && *ptr > *(ptr+1))

int TopPoints(int d[],int n)
{
int peak = 0;
int i = 0;

if(d == NULL)
{
return 0;
}

peak = 0;
for(i = 1; i < n - 1; i++)
{
if(IS_PEAK(&d[i]))
{
if(d[i] > peak)
{
peak = d[i];
}
}
}
return peak;
}

int TopPoints(int d[],int n)
{
int i,j,k,max;
j=1;max=d[0];
while(j<=n-2)
{
i=j-1;k=j+1;
if(d[j]>d[i]&&d[j]>d[k])
max=d[j];j++;
j++;
}
if(d[j+1]>max&&d[j+1]>d[j])max=d[j+1];
return max;
}