寻找数组中的第二大数
方法一:
#include "stdio.h"
#include "stdlib.h"
//初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最大值和次大值,最后就可以得到次大值。
int findsecondmaxvalue(int *a,int size)
{
int i,max,s_max;
max=a[0]; //最大值
s_max=a[1]; //次大值
for(i=0;i<size;i++)
{
if(a[i]>max)
{
s_max=max; //更新最大值和次大值
max=a[i];
}
else if(a[i]<max && a[i]>s_max) //更新次大值
s_max=a[i];
}
return s_max;
}
int main(void)
{
int second,a[]={111,23,3,5,652,2,3};
second=findsecondmaxvalue(a,sizeof(a)/sizeof(a[0]));
printf("这个数组中的次大值为:%d\n",second);
system("pause");
return 0;
}
方法二:
/*
写一个函数找出一个整数数组中,第二大的数(microsoft)
要求效率尽可能高
*/
#include "stdio.h"
#include "stdlib.h"
int find(int *a,int n) //从数组的第二个元素开始查找
{
int i,second=a[1];
for(i=1;i<n;i++)
{
if(a[i]>second)
second=a[i];
}
return second;
}
int findsecondmaxvalue(int *a,int size)
{
int i,first,second;
first=second=a[0];
for(i=1;i<size;i++)
{
if(a[i]>first)
{
second=first;
first=a[i];
}
else if(a[i]<first && a[i]>second)
second=a[i];
}
//最大值和次大值相等(数组的第一个元素为最大值的时候)
if(first==second)
{
second=find(a,size); //从数组的第二个元素开始找一个最大值的即为次大值
}
return second;
}
int main(void)
{
int a[] = {12012, 3, 45, 5, 66, 232, 65, 7, 8, 898, 56, 878, 170, 13, 5};
int second=findsecondmaxvalue(a,sizeof(a)/sizeof(a[0]));
printf("这个数组中的次大值为:%d\n",second);
system("pause");
return 0;
}
寻找数组中的第二大数相关推荐
- 经典算法详解(2)寻找数组中的次大数
题目:10个互不相等的整数,求其中的第2大的数字,要求数组不能用排序,设计的算法效率越高越好. 1 #include<iostream> 2 3 using namespace std; ...
- 编程之美2.10:寻找数组中的最大值和最小值
编程之美2.10: 对于一个有N个整数组成的数组,需要比较多少次才能把最大值和最小值找出来呢? 算法的思想是: 分而治之 测试数据:---------------------------------- ...
- 寻找数组中 的最大值最小值
最简单的方法就是N中的每个数分别和max,min比较,看似2N次比较,其实大于max的就不必和min比较,小于min的也不必和max比较,因此比较的次数不足2N次,程序如下: [cpp] view p ...
- 编程之美2.10 寻找数组中的最大值和最小值
这个问题其实很容易解决,就是循环遍历一遍数组,然后找到数组中存在的最大值和最小值就可以了,书中主要讨论的问题是比较次数较小的方法,不过,书中已经证明了,无论用什么方法最少的比较次数也就是循环遍历一遍的 ...
- 算法-寻找数组中的重复值,四种解法
算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...
- 线性时间复杂度求数组中第K大数
求数组中第K大的数可以基于快排序思想,步骤如下: 1.随机选择一个支点 2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分) 3.设左部分的长度为L, 当K &l ...
- 基于递归寻找数组中的最大数字
问题描述:寻找数组中的最大数字: # 寻找数组中的最大值,这个写法真的可以啊 def find_max(arr):# 先找基线条件if len(arr) == 0:return -1if len(ar ...
- 写一个函数找出一个整数数组中,第二大的数
题目:写一个函数找出一个整数数组中,第二大的数. 算法分析: 1)假设数组中的前两个元素就是最大和第二大,即max和smax: 2)从数组的第二个元素开始遍历数组,当有元素大于max的时候,将max赋 ...
- 寻找数组中最接近目标的数字,Java实现
给出一个排好序的整数数组.需要找到与给定数字最接近的值.数组可能包含重复的值 和负数. 例: Input : arr[] = {1, 2, 4, 5, 6, 6, 8, 9} Target numbe ...
最新文章
- [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)...
- Jarvis OJ web(一)
- xenserver PXE安装系统错误的解决
- 程序员简历的 8 个建议
- adf时间作用域_ADF任务流:页面片段的托管bean作用域
- [奇葩 bug]视图在 ipad5 上正常显示,在 iPad3上超出了边界
- maatkit使用总结
- 又推亲儿子,苹果与国际权威机构推出 Swift 资格认证
- 信息学奥赛一本通1368 对称二叉树
- 后缀树(一)定义及构造
- 下载flash文件的若干方法!
- Less 颜色操作函数Mix的计算方法
- Astronauts UVALive - 3713(2-SAT)
- Java关于日志,及日志的error和warn的选择
- 安卓apk360加固
- 苦逼程序猿的求职经历
- 可自定义存储数据总空间的的类int_128函数库
- 盛语小智教育机器人是骗人的_盛语小智机器人骗局揭露【是不是真的有效】多久可以见...
- Windbg基础-了解Symbols zz
- 新浪微博html5手机版,新浪微博手机版2018
热门文章
- Problem A: 素数对
- 究竟什么是云原生DevOps呢?
- 用unity制作简单的太空游戏(1):简单飞船控制
- PHP面试题:写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数(array_multisort())
- Python编程专属骚技巧6
- 【MySQL】计算 TPS,QPS 的方式
- ORA-01031 权限不足-过程中DBA 角色用户无法执行DDL
- iphone5登陆不了微信,提示“登录失败,连接失败,请检查网络设置”
- Oracle 中control_file_record_keep_time参数的解释
- 常见Linux面试题总结