前几天得知腾讯招聘测试人员的笔试题中的一道附加题是寻找数组中的第二大数,故考虑其做法,在此在此做一小结。
找数组中的第二大数是一个查找过程,一般返回的应该是第二大数在数组中的位置,但若有其他用途,也可以返回该值
是否找到的标志和它的真值。估有两种做法,但其基本思想都是用一个新数与当前的最大数进行比较,若新数大于最大数,
则新书则成为最大数,最大数退居第二大数;若新数大于当前的第二大数并且新书小于最大数,则新数成为第二大数。
方法一:
返回值为次大数在数组中的位置。
#include <stdio.h>
#include <stdlib.h>
int find_secmax(int data[], int count);
int find_secmax(int data[], int count)
{
int max = 0, secmax = -1;
int i;
for(i = 0; i < count; i++)
{
if(data[i] > data[max])
{
secmax = max;
max = i;
}
else if(data[i] > data[secmax]
&& data[i] < data[max])
{