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

 更新时间:2013年05月24日 16:35:27   作者:  
本篇文章是对如何寻找数组中的第二大数进行了详细的分析介绍,需要的朋友参考下
方法一:
复制代码 代码如下:

#include "stdio.h"
#include "stdlib.h"
//初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最大值和次大值,最后就可以得到次大值。
int findsecondmaxvalue(int *a,int size)
{
    int i,max,s_max;
    max=a[0];  //最大值
 s_max=a[1];  //次大值
    for(i=0;i<size;i++)
    {
        if(a[i]>max)
        {
   s_max=max;  //更新最大值和次大值
   max=a[i];
        }
  else if(a[i]<max && a[i]>s_max)   //更新次大值
   s_max=a[i];
    }
 return s_max;
}
int main(void)
{
    int second,a[]={111,23,3,5,652,2,3};
    second=findsecondmaxvalue(a,sizeof(a)/sizeof(a[0]));
    printf("这个数组中的次大值为:%d\n",second);
 system("pause");
 return 0;
}

方法二:
复制代码 代码如下:

/*
写一个函数找出一个整数数组中,第二大的数(microsoft)
要求效率尽可能高
*/
#include "stdio.h" 
#include "stdlib.h" 
int find(int *a,int n)   //从数组的第二个元素开始查找

 int i,second=a[1];
 for(i=1;i<n;i++)
 {
  if(a[i]>second)
   second=a[i];
 }
 return second;
}
int findsecondmaxvalue(int *a,int size) 

 int i,first,second;
 first=second=a[0];
 for(i=1;i<size;i++)
 {
  if(a[i]>first)
  {
   second=first;
   first=a[i];
  }
  else if(a[i]<first && a[i]>second)
   second=a[i];
 }
 //最大值和次大值相等(数组的第一个元素为最大值的时候) 
 if(first==second)
 {
  second=find(a,size); //从数组的第二个元素开始找一个最大值的即为次大值
 }
 return second;
}
int main(void)
{
 int a[] = {12012, 3, 45, 5, 66, 232, 65, 7, 8, 898, 56, 878, 170, 13, 5};
 int second=findsecondmaxvalue(a,sizeof(a)/sizeof(a[0]));
 printf("这个数组中的次大值为:%d\n",second);
 system("pause");
 return 0;
}

相关文章

  • 实例讲解C语言编程中的结构体对齐

    实例讲解C语言编程中的结构体对齐

    这篇文章主要介绍了C语言编程中的结构体对齐,值得注意的是一些结构体对齐的例子在不同编译器下结果可能会不同,需要的朋友可以参考下
    2016-04-04
  • C语言关于include顺序不同导致编译结果不同的问题

    C语言关于include顺序不同导致编译结果不同的问题

    这篇文章主要介绍了在日常调试C语言中include的顺序不同从而影响最后编译结果不同的问题,究其原因是写代码的习惯所导致,下面跟小编一起来看看吧
    2022-04-04
  • C++中模板(Template)详解及其作用介绍

    C++中模板(Template)详解及其作用介绍

    这篇文章主要介绍了C++中模板(Template)的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • C语言编程中的联合体union入门学习教程

    C语言编程中的联合体union入门学习教程

    这篇文章主要介绍了C语言编程中的联合体union入门学习教程,也是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-12-12
  • C++中的变长参数深入理解

    C++中的变长参数深入理解

    变长参数的函数,即参数个数可变、参数类型不定的函数。设计一个参数个数可变、参数类型不定的函数是可能的,最常见的例子是printf函数、scanf函数和高级语言的Format函数。最近的一个项目中就遇到这么一个相关的问题,感兴趣的朋友们下面来一起看看吧。
    2016-10-10
  • Qt使用SQLite数据库存储管理图片文件

    Qt使用SQLite数据库存储管理图片文件

    这篇文章主要为大家详细介绍了Qt如何使用SQLite数据库实现存储管理图片文件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • C语言扫雷游戏的简单实现

    C语言扫雷游戏的简单实现

    这篇文章主要为大家详细介绍了C语言扫雷游戏的简单实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 函数指针与指针函数的学习总结

    函数指针与指针函数的学习总结

    函数指针是指向函数的指针,指针函数是指一个函数的返回值是一个指针。以下就是对函数指针与指针函数的应用进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • C语言指针引用数组案例讲解

    C语言指针引用数组案例讲解

    这篇文章主要介绍了C语言指针引用数组案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • C++实现简单的生产者-消费者队列详解

    C++实现简单的生产者-消费者队列详解

    这篇文章主要为大家详细介绍了如何利用C++实现一个简单的生产者-消费者队列,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04

最新评论