找次大值

给出n个互不相同的元素,找出其中的次大值

代码

int n,a,maxl=-1,max2=-1;
scanf("%d",&n);
for(int i=l;i<=n;i++){
scanf("%d",&a);
if(a>max1){
max2=maxl;
maxl=a;
else if(a>max2)
max2=a;
 printf("%d",max2);
 

代码解释
边读入边比较,同时维护两个擂台
大擂台(max1) 放冠军 (最大值)打不过大擂台的统统去小擂台(max2)和亚军(次大值) 切磋
如果有人能打过现在大擂台的人就让大擂台的人去小擂台最后小擂台留下的就是次大值
这样节省了时间又节省了空间
 

你可能感兴趣的:(算法)