How to find second largest value and its index in an array?

93 views (last 30 days)
Hello everyone, I am trying to find the second largest value and its index in an array given by
A = [11,15,16,99,87]
Any help in this regard will be highly appreciated.

Answers (2)

Matt J
Matt J on 7 Oct 2021
Edited: Matt J on 7 Oct 2021
A = [11,15,16,99,87];
[mx,ind]=maxk(A,2)
mx = 1×2
99 87
ind = 1×2
4 5
secondMax=mx(2)
secondMax = 87
index=ind(2)
index = 5
  1 Comment
Matt J
Matt J on 7 Oct 2021
Or, if ties are not allowed
A = [11,15,16,99,99];
[u,i]=unique(A);
secondMax=u(end-1)
secondMax = 16
index=i(end-1)
index = 3

Sign in to comment.


Image Analyst
Image Analyst on 7 Oct 2021
charu, did you try sorting and using find()? We also need to know your definition of "second largest".
% What is the second largest in this vector: 99 or 87?
A = [11,15,16,99,87, 99, 87]
% Assume it's 87, then to find all locations where 87 occurs:
sortedA = sort(unique(A), 'descend')
indexes = find(A == sortedA(2))
You get
A =
11 15 16 99 87 99 87
sortedA =
99 87 16 15 11
indexes =
5 7

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!