在没有排序的情况下查找n个数字的数组/列表中的3个最大数字

时间:2015-05-29 03:56:41

标签: java arrays max

当我在完成作业时,当我必须在数字列表中找到最大的3个数字(未指定数据结构)时,我会感到很困惑。我完全被我必须做的事感到震惊。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

您可以保留三个变量来存储三个最大值,并遍历数组:

您需要处理三种情况:

  • 当前元素大于最大元素。需要相应更新第二和第三大。

  • 当前元素大于第二大。需要更新第三大。

  • 当前元素大于第三大。

我的code,如果你仍然坚持

for(int i : array)
    if(i > largest)
      //Do smt
    else if(i > second)
      //Do smt
    else if(i > third)
      //Do smt

答案 1 :(得分:0)

    int firstNumber=5;
    int secondNumber=3;
    int thirdNumber=4;

    int largestNumber=(firstNumber>secondNumber)?firstNumber:(secondNumber>thirdNumber)?secondNumber:thirdNumber;
    System.out.println("largestNumber : "+largestNumber);

答案 2 :(得分:0)

非常简单的方法:

    List<Number> numbers = new ArrayList<Number>();
    numbers.add(5);
    numbers.add(4);
    numbers.add(3);
    numbers.add(2);
    numbers.add(1);
    numbers.add(6);

    SortedSet<Number> sortedNumbers= new TreeSet<Number>();
    sortedNumbers.addAll(numbers);
    SortedSet<Number> subSet = sortedNumbers.subSet(sortedNumbers.size()-2, sortedNumbers.size()+1);
    for (Number subSet1 : subSet) {
        System.out.println(""+subSet1);
    }