zoukankan      html  css  js  c++  java
  • 找出一个整形数组中第二大的数字

    如何在时间复杂度为O(n)内找出数组中第二大的数字?

    通过设置两个变量,一个保存最大值,一个保存第二大值,通过在找最大值的过程中,原来的最大值逐渐变为第二大值。一种实现代码如下(Java版):

     1 /**
     2  * 在时间复杂度为O(n)内找出数组的第二大的数字
     3  * @author JiaJoa
     4  *
     5  */
     6 public class Algorithm_GetSecondMax {
     7 
     8     public static void main(String[] args) {
     9         // TODO Auto-generated method stub
    10         int[] data = {3,2,5,1,6,4,7};
    11         System.out.println(Algorithm_GetSecondMax.getSecondMax(data));
    12     }
    13     
    14     //通过设置两个变量,一个保存最大值,一个保存第二大值,
    15     //通过在找最大值的过程中,原来的最大值逐渐变为第二大值,
    16     public static int getSecondMax(int[] data){
    17         int first_max = data[0];
    18         int second_max = Integer.MIN_VALUE;
    19         for(int i=1;i<data.length;i++){
    20             if(data[i]>first_max){
    21                 second_max = first_max;
    22                 first_max = data[i];
    23             }else{
    24                 if(data[i]>second_max)
    25                     second_max = data[i];
    26             }
    27         }
    28         return second_max;
    29     }
    30 }
  • 相关阅读:
    获取目录下所有文件名
    毕业论文endnote使用
    CoinChange
    sublime3个人配置
    2015-12-31
    2015-12-09
    #define DEBUG用法
    fiddler介绍
    app测试模块
    android SDK_安装配置_使用
  • 原文地址:https://www.cnblogs.com/JiaJoa/p/7777629.html
Copyright © 2011-2022 走看看