面试题目(1)如何从一组数据中怎样最快找到第二大数?

在这里插入图片描述
首先定义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;

}

发布了5 篇原创文章 · 获赞 1 · 访问量 94

猜你喜欢

转载自blog.csdn.net/qq_25160759/article/details/104408606