1205 Problem C求次大值
来源:互联网 发布:股票网络销售违法嘛 编辑:程序博客网 时间:2024/06/09 19:44
题目描述
给出你n个数,你的任务就是求出这些数的次大值。那么你会做吗????
输入
有多组数据,每组输出一个n(n<=10^5),然后有n个数据(int范围内)。
输出
每组输出一个次大值。
样例输入
33 2 161 2 3 4 5 6
样例输出
25
提示
不会出现最大值和次大值相同的情况。
这题不能使用冒泡排序对立面的所有元素进行全部排序,因为那样会非常耗时间。
方法一:其实,我们只需要使用冒泡排序排两次序就行了,第一轮可以找出最大值,那么第二轮就可以找出次大值了。
#include<stdio.h>
int main()
{
int n,i,j,t;
while(~scanf("%d",&n))
{
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<2;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("%d\n",a[n-2]);
}
}
/**************************************************************
Problem: 1205
User: 171530425
Language: C
Result: 正确
Time:88 ms
Memory:1364 kb
****************************************************************/
方法二:我们还可以设置一个初始值非常小的变量,让它保存最大值,然后再定义一个初始值非常小的变量,让它与所有元素进行比较,并且求出除了最大值以外的最大值,也即是次大值
#include<stdio.h>
void main(){
int n,i,j,t,f;
while(~scanf("%d",&n)){
int a[n];
f=-65536;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>f){
f=a[i];
}
}
t=-65536;
for(i=0;i<n;i++){
if(a[i]>t&&a[i]!=f){
t=a[i];
}
}
printf("%d\n",t);
}
}
/**************************************************************
Problem: 1205
User: 171530425
Language: C
Result: 正确
Time:88 ms
Memory:1360 kb
****************************************************************/
给出你n个数,你的任务就是求出这些数的次大值。那么你会做吗????
有多组数据,每组输出一个n(n<=10^5),然后有n个数据(int范围内)。
每组输出一个次大值。
不会出现最大值和次大值相同的情况。
这题不能使用冒泡排序对立面的所有元素进行全部排序,因为那样会非常耗时间。
方法一:其实,我们只需要使用冒泡排序排两次序就行了,第一轮可以找出最大值,那么第二轮就可以找出次大值了。
#include<stdio.h>
int main()
{
int n,i,j,t;
while(~scanf("%d",&n))
{
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<2;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("%d\n",a[n-2]);
}
}
int main()
{
int n,i,j,t;
while(~scanf("%d",&n))
{
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<2;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("%d\n",a[n-2]);
}
}
/**************************************************************
Problem: 1205
User: 171530425
Language: C
Result: 正确
Time:88 ms
Memory:1364 kb
****************************************************************/
方法二:我们还可以设置一个初始值非常小的变量,让它保存最大值,然后再定义一个初始值非常小的变量,让它与所有元素进行比较,并且求出除了最大值以外的最大值,也即是次大值
#include<stdio.h>
void main(){
int n,i,j,t,f;
while(~scanf("%d",&n)){
int a[n];
f=-65536;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>f){
f=a[i];
}
}
t=-65536;
for(i=0;i<n;i++){
if(a[i]>t&&a[i]!=f){
t=a[i];
}
}
printf("%d\n",t);
}
}
void main(){
int n,i,j,t,f;
while(~scanf("%d",&n)){
int a[n];
f=-65536;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>f){
f=a[i];
}
}
t=-65536;
for(i=0;i<n;i++){
if(a[i]>t&&a[i]!=f){
t=a[i];
}
}
printf("%d\n",t);
}
}
/**************************************************************
Problem: 1205
User: 171530425
Language: C
Result: 正确
Time:88 ms
Memory:1360 kb
****************************************************************/
阅读全文
0 0
- 1205 Problem C求次大值
- Problem C
- Problem C
- Problem C
- Problem C
- Problem C
- Problem C
- Problem c
- Problem C
- Problem C
- Problem C
- Problem C
- Problem C
- Problem-C
- Problem C
- Problem C
- Problem C
- Problem-C
- 三字棋游戏
- 单链表拆分
- c++运算符重载1
- 什么是SEM?2017年SEM的发展趋势
- python从入门到入坟 三(吕万友)
- 1205 Problem C求次大值
- 详细介绍抽象类
- 数据报 “Uncaught SyntaxError: Unexpected token”错误的解决办法
- final...?
- Android自定义对话框(Dialog)位置,大小
- linux常用命令加实例大全
- html、css
- 【安装教程】opencv3.2 contrib ubuntu16.04
- 【TensorFlow】LSTM(基于PTB的自然语言建模)