定义两个变量max,sec,向后遍历,时间复杂度为0(n);
int main()
{
int a[]={1,2,3,4,5,6,7,54,3,2,1};
int max=a[0],sec;
for(int i=0;i<sizeof(a)/sizeof(int);i++)
{
if(max<a[i])
{
sec=max;
max=a[i];
}
if(max>a[i]&&a[i]>sec)
sec=a[i];
}
printf("%d %d",max,sec);
}
如果前N个最大值,可以用建堆,堆大小为N,然后遍历后面。