求数组的最大值和次大值

#include <stdio.h>
#include <stdlib.h>

/*
	求数组的最大值和次大值。
*/
int main() {
	int n;
	while (printf("Please input n:\n"),fflush(stdin), scanf("%d", &n) != EOF){
		if (n < 2){
			printf("Please input a bigger number.\n");
			continue;
		}
		printf("Please input %d numbers:\n",&n);
		int *numbers = (int*)malloc(n*sizeof(int));
		for (int i = 0; i < n; ++i)
			scanf("%d",numbers+i);
		int max1, max2;
		if (numbers[0] > numbers[1]){
			max1 = numbers[0];
			max2 = numbers[1];
		}
		else{
			max1 = numbers[1];
			max2 = numbers[0];
		}
		for (int i = 2; i < n; ++i)
			if (numbers[i] > max1){
				max2 = max1;
				max1 = numbers[i];
			}
			else if (numbers[i] > max2)
				max2 = numbers[i];
		printf("The biggest number is: %d\n", max1);
		printf("The second biggest number is: %d\n", max2);
	}
	system("pause");
	return 0;
}

  

时间: 2024-10-06 04:50:47

求数组的最大值和次大值的相关文章

leetcode-747-Largest Number At Least Twice of Others(求vector的最大值和次大值)

题目描述: In a given integer array nums, there is always exactly one largest element. Find whether the largest element in the array is at least twice as much as every other number in the array. If it is, return the index of the largest element, otherwise

求最大值和次大值

void main() { int a,b=0,i,j,k,g,z=0; int num[20][10]={{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}}; int Max[20][2]={{0},{0}}; scanf("%d",&a); ////////数据组数 if(a<=0){ exit(0); } for(i=0;i<a;i++){ scanf("%d",&j); ////////每组数据个数

编程之美3:寻找数组中的最大值和最小值以及最大值和次大值

很开心,这是今天的第三篇文章啦!下午健身也感觉非常过瘾,托付宿舍妹子从日本代购的护肤品也到了.耳边漂浮着Hebe田馥甄的<魔鬼中的天使>文艺的声线,一切都好棒,O(∩_∩)O哈哈~.爱生活,爱音乐,爱运动,额,当然还有要爱学习啦!加油(^ω^) 额,扯远了.第三篇是关于寻找数组中的最大值和最小值.第一次看到这个题目的时候,楼主稍微鄙视了一下,因为觉得这个题目有什么好做的.但是楼主还是看了看<编程之美>上的写的,发现还是有必要记录一下,不一样的思考方式.很赞!大家和楼主一起哦,Are

第十六周oj刷题——Problem K: 填空题:类模板---求数组的最大值

Description 类模板---求数组的最大值 找出一个数组中的元素的最大值,数组大小为10.(用类模板来实现) 数组元素类型作为类模板的参数. Input 10个int型数据 10个double型数据 10个char型数据 10gestring型数据 Output 10个int型数据的最大值 10个double型数据的最大值 10个char型数据的最大值 10个string型数据的最大值 Sample Input 1 3 5 7 9 8 6 4 2 0 1.2 3.4 5.66 7.8 9

同时寻找最大值和第二大值 锦标赛算法

问题:在一个数组中同时寻找最大值和第二大值,这里假设数组的元素个数n大于2 方法一:遍历数组,设置max和secondMax标志,如果有大于max的就更新max,如果有小于max但是大于secondMax的就更新secondMax. 比较次数:在a[0]和a[1]中找出临时的max和secondMax需要一次比较.在剩下的n-2个数中最坏时需要同max和secondMax分别比较,总共比较2(n-2),所以总的比较次数为1+2(n-2).代码如下: void traverse_find(int

JS中 reduce() 数组去重及求数组项最大值

一.语法 arr.reduce(function(prev,cur,index,arr){...}, init); 其中, arr表示原数组;prev表示上一次调用回调时的返回值,或者初始值 init;cur表示当前正在处理的数组元素;index表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;init表示初始值. 1.求数组项最大值 let arr = [1, 2, 3,3,2,4] let max = arr.reduce(function (prev, cu

[noi2013]快餐店 基环树dp,单调队列维护最大值和次大值

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 220000 #define inf 0x3ffffffffffffffLL typedef long long ll; int v[N],e[N],ne[N],nn,w[N]; void add(int x,int y,int z){ ne[++nn

分治法求数组的最大值最小值

实现求数组的最大值最小值,蛮力法要容易的多.本着重在体验分治法的思想的原则: 1 int main(void) 2 { 3 void Maxmin(int a[],int low,int high,int maxmin[2]); 4 int a[10],maxmin[2]; 5 6 printf("Enter 10 integer numbers:\n"); 7 for(int i=0;i<10;i++) 8 scanf("%d",a+i); 9 10 Max

js求数组的最大值--奇技淫巧和笨方法

写这篇文章的原因我目前做的项目很少用到算法,于是这方面的东西自然就有点儿生疏.最近的一次编码中遇到了从数组中获取最大值的需求,当时我不自觉的想到了js的sort()函数,现在想来真是有些“罪过”,当时自己内心还觉得有些得意:“嗯,我用js的内置方法解决了一个通常需要用排序算法才能解决的问题,代码简短,不用去写头疼的遍历和比较,可读性还好...”.内心戏很重,对吧.咳咳,哎,自己还是嫩而且还懒.js内生的sort函数也是用到了排序,详见segmentfault上的这个js内生sort()函数是如何