excel 中某一列数如何找出第二大的数

excel 中某一列数如何找出第二大的数,第1张

假如数值在A1:A100,求数值:

一:max函数

第一大:=MAX(A1:A100)

第二大:=MAX(IF(A1:A100<MAX(A1:A100),A1:A100))

求出小于最大值的数组,然后在数组中找到最大值,就是第二大

二、large函数

用large函数

第一大:=LARGE(A1:A100,1)

第二大:=LARGE(A1:A100,COUNTIF(A1:A100,LARGE(A1:A100,1))+1)

求出最大值的个数n,并求出第n+1位的最大值。(因为large函数遇到数值相同的,第二大会和第一大相同)。

还能用函数找出数值多个时,在范围中出现位置:

比如刚才的公式在b5,则

第一次出现的位置:

=ADDRESS(MIN(IF(A1:A100=B5,ROW(A1:A100))),4)

或:

=ADDRESS(SMALL(IF(A1:A100=B1,ROW(A1:A100)),1),4)

最后一次出现的位置:

=ADDRESS(Max(IF(A1:A100=B5,ROW(A1:A100))),4)

或:

=ADDRESS(LARGE(IF(A1:A100=B1,ROW(A1:A100)),1),4)

同理,第二次出现的位置:

=ADDRESS(SMALL(IF(A1:A100=B1,ROW(A1:A100)),2),4)

倒数第二次出现的位置:

=ADDRESS(LARGE(IF(A1:A100=B1,ROW(A1:A100)),2),4)

需按Ctrl+Shift+Enter结束公式输入。

用两个变量max,max2,其中max储存最大值,max2储存第二大值

初始化的时候,将数组中的第一个元素中较大的存进max中,较小的存进max2中

然后从第三个元素(下标为2)的元素开始,如果遇到的数比max大,就让max2=maxmax等于遇到的数

一直循环,直到数组尾部

最后输出max2

可能没有讲明白,这里重新说一下.

定义两个变量max1,max2分别代表第一大和第二大的数字,我们将前两个数字大的放在max1,小的放在max2从需要遍历的第三个数字开始,如果当前数字比max2大,max2=当前数字,比较一下max1和max2,如果max1小于max2,交换一下max1和max2.

之前从max1开始比较需要比较一遍max2.现在这种思想比较好理解一点.本质上就是用堆求topk的问题.

原则上时间复杂度是nlogk,因为这里k是2,所以logk=1(一个常数),时间复杂度为O(Cn)=O(n)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6820925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存