您的位置:首页 > 其它

查找数组中第二大的数字

2015-08-28 16:37 337 查看
#define ARRSIZE             10
#define MINNUMBER          0xFFFFFFFF
#define FIND_SUCESS         1
#define FIND_FAIL          0
int GetSecondMaxNumber(int buffer[],int *secondMax)
{
int i,max;

max = buffer[0];
*secondMax = MINNUMBER;
for(i=1;i<ARRSIZE;i++)
{
if(buffer[i] > max)
{
*secondMax = max;
max = buffer[i];
}
else if (buffer[i] > *secondMax && buffer[i] < max)
*secondMax = buffer[i];
}
if(*secondMax == MINNUMBER) //The numbers are all the same.
return FIND_FAIL;

return FIND_SUCESS;
}


查找第二大数实际上是伴随在查找最大数的过程中的。
<!--[if !supportLists]-->1、<!--[endif]-->如果当前元素大于最大数 max,则让第二大数等于原来的最大数 max,再把当前元素的值赋给 max。
<!--[if !supportLists]-->2、
<!--[endif]-->如果当前的元素大于第二大数secondMax的值而小于最大数max的值,则要把当前元素的值赋给 secondMax。――判断条件不能仅仅只是大于第二大的数secondMax,否则我们便无法处理” 99,99,88,86,68,66 ”这种情况。
PS:这个函数在调用时需要判断函数的返回值是否是 FIND_SUCESS 才能使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: