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

    刚开始接触这个题的时候,我的脑子快速飞转,但是能想到的是“冒泡排序(由大到小)”,然后取出数组的第二个值。

    但是很多其他的情况还是没有考虑的,

    1、没有第二大值,也就是这一组数字都一样。

    2、第二大值不止一个,

    3、考虑到性能方面,冒泡排序性能太低,循环次数太多。

    中和以上情况,写出如下算法:

         /// <summary>
            /// 找出一个整数数组中,第二大的数
            /// </summary>
            /// <param name="data">整数数组</param>
            /// <param name="count">数组长度</param>
            /// <returns>第二大值</returns>
            public int Find_Sec_Num(int []data,int count)
            {
                  int max_Num=data[0];
                  int sec_Max = -32768;
                  for(int i=0;i<count;i++)
                  {
                      if(data[i]>max_Num)
                      {
                        sec_Max=max_Num;
                        max_Num=data[i];
                      }
                      else if(data[i]>sec_Max)
                      {
                        sec_Max=data[i];
                      }
                  }
                  return sec_Max;
            }
    
            /// <summary>
            /// 返回信息
            /// </summary>
            /// <param name="data">数组</param>
            /// <param name="count">长度</param>
            /// <returns>返回信息</returns>
            public string Get_Info(int []data,int count)
            {
                int secMax = Find_Sec_Num(data, count);
                string returnInfo=null;
                if (secMax == -32768)
                {
                    returnInfo = "第二大值不存在或为-32768";
                }
                else
                {
                    returnInfo = "第二大值为" + secMax;
                }
                return returnInfo;
            }
  • 相关阅读:
    thingsboard学习笔记
    Java8 Lambda表达式之循环使用
    LocalDateTime使用记录
    mqtt之wss功能
    OpenSSL证书合成
    Apache Commons IO使用
    visio A3设计图如何在A4纸上打印
    MSDE数据库附加
    电脑C盘application data拒绝访问的解决方法
    64位WIN7+oracle11g+plsql安装
  • 原文地址:https://www.cnblogs.com/myhappylife/p/3195566.html
Copyright © 2011-2022 走看看