求最大值和次大值

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);                      ////////每组数据个数
        for(k=0;k<j;k++){
            scanf("%d",&num[i][k]);
        }
        for(j=k-1;j>0;j--){                  /////////一组结束冒泡排序
            for(g=k-1;g>0;g--){
                if(num[i][g]>num[i][g-1]){
                    b=num[i][g];
                    num[i][g]=num[i][g-1];
                    num[i][g-1]=b;
                }
            }
        }
        Max[i][0]=num[i][0];
        while(num[i][z]>=Max[i][0]){
            z++;
        }
        Max[i][1]=num[i][z];
        z=0;
    }
    for(i=0;i<a;i++){
        printf("%d %d\n",Max[i][0],Max[i][1]);
    }
}

题目中让我们来求输入数据的最大值和次大值。最开始我是想在数组中直接对其进行排序,然后输出数组的第一个和第二个数。但是,我没有考虑到重复数据的问题,所以我进行了一些改进,想将最大值找出来以后保存入另一个数组,再将最大值与剩下的数进行比较,第一个小于它的数就是次大值。

这个问题解决以后,我发现,输入多组数据时,二维数组的数据比较难处理,需要一个变量保存每一组数据的数据个数,比较麻烦,所以,我就将数据处理直接放到了输入数据之后。输入一组数据,马上进行处理,这样数据个数不需要另外保存,还提高了运行效率

时间: 2024-10-02 11:23:17

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

紫色的手链(求最大值和次大值的异或值最大)

描述 那是木姑娘十七岁时,我送给她的生日礼物.(后来手链也成为了我最喜欢的出题媒介) 记得最初买的手链,由n段紫色的珠子构成,每一颗珠子都被赋予了一种价值评价w[i]. 为了木姑娘,我只惋惜自己不能摘下漫天繁星送给她. 不过我并没有将整个手链都送出去,木姑娘的手腕是纤细的.我只需要截取一个子段就可以了,长度无论多少都可以. 不过我希望,这个子段的最大值异或次大值可以最大,这样或许木姑娘会更喜欢吧.(这里次大是说严格次大) 格式 输入格式 第一行一个数n 第二行n个数,依次表示这个序列w[1],w

求数组的最大值和次大值

#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")

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

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

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

[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

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

问题:在一个数组中同时寻找最大值和第二大值,这里假设数组的元素个数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

hdu 2665 可持久化线段树求区间第K大值(函数式线段树||主席树)

http://acm.hdu.edu.cn/showproblem.php?pid=2665 Problem Description Give you a sequence and ask you the kth big number of a inteval. Input The first line is the number of the test cases. For each test case, the first line contain two integer n and m (

hihocoder 1496:寻找最大值(高维前缀最大次大值)

[题目链接] https://hihocoder.com/problemset/problem/1496 [题目大意] 给定N个数A1, A2, A3, ... AN, 从中找到两个数Ai和Aj(i≠j)使得乘积Ai*Aj*(Ai&Aj)最大 [题解] 我们可以枚举x&y的结果z,找出两个数x&y==z使得x*y最大,更新答案即可, 条件可以被削弱为z为x&y的子集,这种条件放缩不会导致最优解的丢失, z为x&y的子集等价于z为x的子集并且z为y的子集. 那么我们只

POJ2985 The k-th Largest Group[树状数组求第k大值 并查集]

The k-th Largest Group Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 8807   Accepted: 2875 Description Newman likes playing with cats. He possesses lots of cats in his home. Because the number of cats is really huge, Newman wants to g