给定一个数组,寻找次大的数,你会如何实现?

代码

 internal static int FindSecondMaximum(int[] input)
        {
            if (input == null || input.Length < 2)
            {
                throw new InvalidOperationException("the input paramter is invalid, please check your input");
            }
            int max1 = input[0], max2 = input[1];
         
            Swap(ref max1, ref max2);
            for (int i = 2; i < input.Length; i++)
            {
                if (input[i] > max2)
                {
                    max2 = input[i];
                    Swap(ref max1, ref max2);
                }            
            }
            //if (max1 == max2)
            //{
            //    throw new InvalidOperationException("All the given values are same");
            //}         
            return max2;
        }

private static void Swap(ref int max1, ref int max2)
        {
            if (max1 < max2)
            {
                int temp = max1;
                max1 = max2;
                max2 = temp;
            }
        }

由这里我们可以类推,如果让你实现寻找第十个大的数,你会如何做呢?

转载于:https://www.cnblogs.com/DivineEagle/archive/2011/01/27/Nisten.html

给定一个数组,寻找次大的数 (1)相关推荐

  1. 数组中前k大的数系列

    1. 概述 给定一个数组array,大小为n,找到其中第k大的数或者前k大的数.这是一个电面高频题,有快排,堆排等多种思路来解题,本文章将从时间复杂度和空间复杂度,来介绍这些算法以及它们所适用的场景 ...

  2. C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。

    )输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出. [输入] 第一行包含一个整数n,表示数组的大小. 第二行包含n个整数,表示数组的元素,整数之间以一个 ...

  3. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。

    给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序. import java.util.Arrays;public class MaximumDif ...

  4. 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的

    买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该 ...

  5. java 算法之找出数组中第二大的数

    1.如果仅考虑实现功能而不考虑效率,可以先通过排序算法将数组排序,然后根据数组下标来访问数组中第二大的数,,最快的排序算法一般为快速排序算法,但是其时间复杂度为(nlogn),根据下标访问需要便利一遍 ...

  6. 给定一个数组,输出这个数组中的最大值和最小值

    /*** @author LLJ* @time 2020-5-6 17点06分* @Description 给定一个数组,输出这个数组中的最大值和最小值*/ public class BigAndSm ...

  7. leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置

    给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置 leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置 示例: 输入: [0 ...

  8. C++实现求数组中前K大的数

    参考:http://blog.csdn.net/xiaoding133/article/details/8037086 C++实现求数组中前K大的数,即求数组的最大的k个数 //数组中求最大的k个数 ...

  9. 算法---找到数组中第二大的数

    题目 找到无序数组中第二大的数 思路 我们可以用两个容器记录所有遍历过的元素中,第一大和第二大的数,在后续的遍历过程中,我们不断更新这两个值即可.时间复杂度O(n) 实现方法: public stat ...

  10. 剑指offer:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,..,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]

    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]. 不能使用除 ...

最新文章

  1. 基于jquery的插件turn.js学习笔记
  2. iOS 编译后的Archiveing 界面在 Windows-organizer 下
  3. 3.Shell 编程从入门到精通 --- 编程基础的基本元素
  4. Git-第五篇廖雪峰Git教程学习笔记(4)分支
  5. 国际国内cms系统开源网址大综合
  6. Mac安装JDK1.8及环境变量配置
  7. graphpad细胞增殖曲线_Graphpad 作图教程 | 这份超详细的生存曲线绘制指南,科研新手一看就会!...
  8. norm函数-matlab
  9. 学英语尽量不要从背词汇表开始
  10. HTTP 出现304情况及详解
  11. VB是对API的封装 qq 快速登录 各种webservice接口搜集 ReReg.bat 注册登录组件
  12. 问题解决:error CS0234: 命名空间“System”中不存在类型或命名空间名“CodeDom”/“ComponentModel”(是否缺少程序集引用?)
  13. 初级系列11.个人所得税问题
  14. ORB-SLAM3中的词袋模型BoW
  15. win10实现debug
  16. 杭州地区IT公司招聘分析与求职建议
  17. JSP事件——键盘、鼠标、表单
  18. MIPS指令集 指令的格式
  19. 选择法排序的两种方法
  20. Html页面生成excel,html页面导出为excel表格

热门文章

  1. Git版本控制及远程仓库的使用
  2. Facebook开源项目:我们为什么要用Fresco框架?
  3. 【C/C++】转义字符大全
  4. C#中对 XML节点进行添加,删除,查找和删除操作
  5. nodepad++通过正则表达式,删除带有特殊字符的某一行
  6. 跳表 skipList
  7. Java从0开始之Java环境搭建
  8. Xcode6 - 更改项目Copyright
  9. 微信微订货店:品牌支持,走在同行业的前列。代理,仅仅是寻求双赢
  10. 土豆首页图片延迟加载的效果