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

转载 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;
}

相关文章推荐

查找数组中第二大的数(c语言)

#include int flag=0; //标记数组内的内容全部相同 int findsecond(int a[],int len) { int max,secmax; int i...

求无序数组中第二小的元素

一次遍历求无序数组(数组中每个元素都是唯一的)中第二小的元素: (暂时还没有考虑数组元素存在重复的情况。。。) #include using namespace std; int main...

在数组中求最大值最小值,第二大的值和第二小的值

package dd.mm; public class Szqzdzx{     public static void main(String[] args){         int[...

寻找数组中的第二大数

/* 写一个函数找出一个整数数组中,第二大的数(microsoft) 要求效率尽可能高 */ #include "stdio.h" #include "stdlib.h" int f...

数组50按从大到小输出第二大

  • 2014年01月08日 13:37
  • 5KB
  • 下载

编程之美2.10扩展问题求数组中第二大数

要求求得数组中第二大数采用分治思想解决这个问题 #include using namespace std; //分治思想求数组中第二大的数 //low为数组低位索引,high为数组高位索引 v...

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

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

找出一个整数数组中,第二大的数

/* 写一个函数找出一个整数数组中第二大的数 */#include #include #include #define SIZE 10 int array[] = {0}; //随机产...

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

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

如何快速找出一个数组中最大数和第二大数

看到一道题是:快速找出一个数组中最大数和第二大数。        我之前学了一些数组排序,例如冒泡排序,简单选择排序等等,然后我就想可不可以利用冒泡排序来实现呢?之前写过冒泡排序实现从小到大的排列,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:寻找数组中第二大或第二小的数值
举报原因:
原因补充:

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