版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hua12134/article/details/79167798
如果是面试遇到这种类型的题,一定要多考虑一下了,毕竟题目不难,如果直接用排序去解题的话,面试官估计会比较失望了。因为这种类型的题,解法有很多,那么别人当然是希望得到最高效的解法了。试想如果有一万个数,如果用排序解答,是不是就浪费了大量的资源去将那些并不重要的数进行了排序。
#include <stdio.h>
void find(int a[], int len)
{
int max, second, i;
max = 0;
second = 0;
for(i = 0; i < len; i++)
{
if (a[i] > max)
{
second = max; //先把原来的最大数给第二大数
max = a[i]; //再刷新最大数
}
else if (a[i] > second)
second = a[i]; //第二大的数
}
printf("The Second number is: %d\n", second);
}
int main()
{
int a[] = {86, 23, -5, 2324, 34, 1, 9, 88};
int length = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < length; i++) //打印原有的数组
{
printf("%d ", a[i]);
}
printf("\n");
find(a, length);
return 0;
}