寻找数组中第二大或第二小的数值

转载 2016年08月29日 19:58:09

昨天晚上参加了360校园招聘的笔试,其中最后一道笔试题就是找数组中的第二大的数。

可以看出今年360笔试的试题还是不难的,想起昨晚提前把试题做完后,提前把试卷给交了,就和旁边的北大的一哥们聊天,聊最近的各种笔试、面试以及被鄙视。快到公交站时,还讨论着明天的腾讯、百度,以及晚上的去哪儿网的笔试。找工作还确实是个体力活啊!到处赶场。

2013年360校园招聘题:写一个函数找出一个整数数组中,第二大的数。

从一个给定的、无序的数组中,找出第二大或者第二小的数值。

但如果有重复的话,需要重新处理下。

#include <stdio.h>
 
int FindSecondBiggest(int *v, int len)
{
    if (v == NULL || len < 2) {
        return 0xfffffff;
    }
 
    int i, max = v[0], second = v[1];
    if (max < second) {
        max = v[1];
        second = v[0];
    }
    for (i = 2; i < len; ++ i) {
        if (v[i] > max) {
            second = max;
            max = v[i];        
        } else if (v[i] > second) {
            second = v[i];
        }
    }
    return second;
}
 
int FindSecondLeast(int *v, int len)
{
    if (v == NULL || len < 2) {
        return 0xffffffff;
    }
 
    int i, min = v[0], second = v[1];
    if (min > second) {
        min = v[1];
        second = v[0];
    }
    for (i = 2; i < len; ++ i) {
        if (v[i] < min) {
            second = min;
            min = v[i];
        } else if (v[i] < second) {
            second = v[i];
        }
    }
    return second;
}
 
int main()
{
    int v[] = {1,2,3};
    int len = sizeof(v) / sizeof(v[0]);
    printf("SecondBiggest = %d\n", FindSecondBiggest(v, len));
    printf("SecondLeast = %d\n", FindSecondLeast(v, len));
    return 0;
}

查找数组中第二大或者第二小的数值

给出一个无序数组,找出其中的第二大或者第二小的数值,下面给出详细代码,仅供参考。 #include int FindSecondBiggest(int* v, int len) { if ...
  • yuxikuo_1
  • yuxikuo_1
  • 2015年02月08日 18:12
  • 482

C语言,求数组中第二大值,两种方法.

//第一种方法 int sum = 0; int a[20] = {0}; int max = 0,secMax = 0; printf("20个随机数为: "); ...
  • duoduo_333
  • duoduo_333
  • 2014年07月21日 21:47
  • 1861

数组最大值与第二大值交换-javascript实现

Math.max();Math.max.apply(null,arguments);Object.prototype.toString.call();Array.prototype.slice.cal...
  • westernRanger
  • westernRanger
  • 2016年02月29日 23:22
  • 602

查找算法——找到序列中第二大的数

今天来说一个简单的需求:在一个序列中找到第二大的元素。 一眼看到这个问题,感觉解决的方法有很多,因为这并不是一个困难的问题。随便一想,能有下面几种解法: 1 首先排序,然后取第二个位置的元素 2...
  • qq_28180261
  • qq_28180261
  • 2016年10月26日 12:37
  • 515

如何找出数组中第二大的数

如果仅仅是考虑实现功能,而不考虑时间效率,可以先通过排序算法将数组进行排序,然后根据数组下标来索引访问数组中第二大的数,最快的排序算法一般为快速排序算法,但是其时间复杂度仍未O(nlogn),根据下标...
  • JohnLee_chun
  • JohnLee_chun
  • 2016年09月16日 17:00
  • 2922

查找一个数组中第二大的数的下标并输出

查找一个数组中第二大的数的下标并输出
  • qq_24877569
  • qq_24877569
  • 2016年07月26日 22:50
  • 2370

从一个数组中查找和目标数最接近的或者相等的数

/**  * 查找出最接近目标值的数,并返回。  * @param array  * @param targetNum  * @return  */ public static Integ...
  • huoyunshen88
  • huoyunshen88
  • 2013年02月04日 09:41
  • 7406

Oracle数据库表中查询最大值和第二大值

Oracle数据库表中查询最大值和第二大值
  • hailangswpi
  • hailangswpi
  • 2017年05月09日 16:08
  • 3097

Java取一个数组里面第二大的数据

这边博客主要是介绍一道面试题的解法。 取一个数组里面第二大的数据。这个题目本身其实不是难,有多种解法,但是比较容易忽略的是这道题目里面其实有几个坑的地方 1. 数组为空或数组只有一个数据,数组非法...
  • IT_Transformers
  • IT_Transformers
  • 2016年03月07日 18:00
  • 2743

同时寻找最大数和最小数的最优算法 第二大数

 我们知道,在一个容量为n的数据集合中寻找一个最大数,不管用什么样的比较算法,至少要比较n-1次,就算是用竞标赛排序也得比较n-1次,否则你找到的就不能保证是最大的数。那么,在一个容量为n的数据...
  • u010594850
  • u010594850
  • 2014年10月09日 17:02
  • 1575
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:寻找数组中第二大或第二小的数值
举报原因:
原因补充:

(最多只允许输入30个字)