如何用一个循环求出一个数组中第二大的数

如题所述

可能没有讲明白,这里重新说一下.
定义两个变量max1,max2分别代表第一大和第二大的数字,我们将前两个数字大的放在max1,小的放在max2;从需要遍历的第三个数字开始,如果当前数字比max2大,max2=当前数字,比较一下max1和max2,如果max1小于max2,交换一下max1和max2.
之前从max1开始比较需要比较一遍max2.现在这种思想比较好理解一点.本质上就是用堆求topk的问题.
原则上时间复杂度是nlogk,因为这里k是2,所以logk=1(一个常数),时间复杂度为O(Cn)=O(n)
温馨提示:答案为网友推荐,仅供参考