写一个函数找出一个整数数组中,第二大的数
刚开始接触这个题的时候,我的脑子快速飞转,但是能想到的是“冒泡排序(由大到小)”,然后取出数组的第二个值。
但是很多其他的情况还是没有考虑的,
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; }
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步