java lists

how can I find the second highest value in a list of integers? and also the second lowest ?
rwallacejAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
csaba_bConnect With a Mentor Commented:
Hi djspinnet!
your solution won't work for the following list: 2, 1 ... sorry

my proposal is:

suppose the list contains at leas 2 members and in case when two members has the highest value, the second highest equals the highest :)

int max = ((Integer)list.next()).intValue();
int max2 = ((Integer)list.next()).intValue();
int mxc = max2;
while(true) {
  if(mxc>=max) {
    mx2 = max;
    max = mxc;
  } else if(mxc>max2) {
    max2 = mxc;
  }
  if(!list.hasNextt()) {
    break;
  }
  mxc = ((Integer)list.next()).intValue();
}

for the second lowest you just replace > with <

csaba
0
 
djspinnetConnect With a Mentor Commented:
to find the second highest,

declare two variables max and second_max

1) traverse the list
2) store the first integer in max
3) if the next int (let's call it x) is larger than max, assign second_max = max; and max = x;
4) continue traversing the whole list and performing the same operation
5) return second_low

same goes for second lowest, just change >= to <=
0
 
MogalManicCommented:
If speed is not an issue, just sort the list and grab the 2nd and 2nd from last item from the list
        Collections.sort(l);
        small=l.get(1);
        large=l.get(l.size()-2);
0
 
djspinnetCommented:
actually, my solution did work - i implemented it once ;)
0
 
csaba_bCommented:
To djspinnet:

Have you tried your algorithm with the list I mentioned? If yes, and the result was correct. you can accept the points offered.

I don't think so ...

Csaba
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.