i am trying to write a function to find the second max number
Show older comments
can you edit this code so it can find the second max number
function [SeMax] = SecondMax(v)
n = numel(v);
res = sort(v);
for k = 1 : 1: n
res = v(1,end-1);
end
end
5 Comments
Walter Roberson
on 12 Jun 2018
That sounds like homework.
Why are you bothering to sort v and assign the result to res if you are going to overwrite all of res each time through the loop after that?
Your function is defined as returning the value of SeMax but you never assign a value to that variable.
Suppose that the vector contains two copies of the same maximum number. For example [5 -1 5 3], which would sort to [-1 3 5 5] . Then if you remove the maximum number at the end, you would get [-1 3 5] . Would it be okay that the 5 left at the end is considered the second maximum number, or does the second maximum number have to be a number that is distinct from the maximum number?
What should your code do if all of the entries in the vector are the same?
farah hattan
on 12 Jun 2018
Walter Roberson
on 12 Jun 2018
Yes, I do know how to do any of those possibilities, but I do not know yet what the requirements are for your assignment.
Let us start with something simple: if the input is the single number 7, then what does the output have to be? Next, if the input is [7 7], then what does the output have to be? Next, if the input is [7 7 9], then what does the output have to be?
Answers (1)
Paridhi Yadav
on 12 Jun 2018
In your function you can write
res = sort(v)
SeMax = res(end-1)
It will give you the last second value after sorting, which is second largest if last and second last values are not same.
1 Comment
Jan
on 12 Jun 2018
It is useful not to post solutions of homework questions. But you are suggesting only code, which was posted by the OP already. That's okay. +1
Categories
Find more on Shifting and Sorting Matrices 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!