代码如下:
#define MIN_INT -2147483648
/*** @brief 查询整型数组中第二大的数
* @param [in] array 数组指针
* @param [in] len 数组长度
* @param [out] secNum 第二大数
*/
bool findSecNum(int* array, int len, int& secNum)
{
if (array == NULL || len < 2)
{
return false; // 数组空或数据项少于二,不存在第二大
}
int maxNum = array[0];
secNum = MIN_INT;
int i;
for (i=1; i<len; i++)
{
if (maxNum != array[i]){
break;
}
}
if (i == len)
{
return false; // 数组全部相等,不存在第二大
}
for (i=1; i<len; i++)
{
if (array[i] > maxNum){
secNum = maxNum;maxNum = array[i];
}else if (array[i] < maxNum && array[i] > secNum){
secNum = array[i];
}
}
return true;
}
上述只是一种方法,也可以先将数组递减排序,再遍历数组得到所需,此处不再累叙。