首先定义max变量以存储最大值,secmax存储第二大的值。先取出数组中前两个值,将最大的存储在max中,小的存储在secmax中。
接下来 在循环中 取出数组的元素a[i].起初先判断a[i]是否是这三个数中最大的,如果是那么将max 记录a[i]的值,secMax 记录先前的max 的值。如果不是,那么判断a[i]是否是这个三个数中的第二大的值,如果是secmax记录该值,否则不操作。
代码如下:
int array[]={0,3,1,2,5,4,1,8};
int length = sizeof(array) /sizeof(array[0]);
int findSecMax(int *array,int length){
int max = array[0] > array[1]?array[0]:array[1];
int secMax = max != array[0]?array[0]:array[1];
for(int i = 2;i<length;i++)
{
int temp = 0,temp1 = array[i];
if(temp1 > max)
{
temp = max;
max = temp1;
temp1 = temp;
}
if(temp1 > secMax)
{
secMax = temp1;
}
}
return secMax;
}