寻找数组中的第二大数
来源:互联网 发布:html5建站 编辑:程序博客网 时间:2024/05/22 08:06
转自http://m.blog.csdn.net/blog/xiyoukeke/6366197
前几天得知腾讯招聘测试人员的笔试题中的一道附加题是寻找数组中的第二大数,故考虑其做法,在此在此做一小结。
找数组中的第二大数是一个查找过程,一般返回的应该是第二大数在数组中的位置,但若有其他用途,也可以返回该值
是否找到的标志和它的真值。估有两种做法,但其基本思想都是用一个新数与当前的最大数进行比较,若新数大于最大数,
则新书则成为最大数,最大数退居第二大数;若新数大于当前的第二大数并且新书小于最大数,则新数成为第二大数。
方法一:
返回值为次大数在数组中的位置。
#include <stdio.h>
#include <stdlib.h>
int find_secmax(int data[], int count);
int find_secmax(int data[], int count)
{
int max = 0, secmax = -1;
int i;
for(i = 0; i < count; i++)
{
if(data[i] > data[max])
{
secmax = max;
max = i;
}
else if(data[i] > data[secmax]
&& data[i] < data[max])
{
secmax = i;
}
}
return secmax;
}
void main()
{
int data[5];
int i, second;
printf("/nInput data:");
for(i = 0; i < 5; i++)
{
scanf("%d", data+i);
}
second = find_secmax(data, 5);
printf("%d", second);
}
方法二:
返回是否找到标志和第二大数真值。
#include <stdio.h>
#define ARRSIZE 10 /*数组大小*/
#define MINNUMBER 0xFFFFFFFF /*定义无穷大*/
#define FIND_SUCESS 1 /*查找成功*/
#define FIND_FAIL 0 /*查找失败*/
/*查找次大数的函数*/
int GetSecondMaxNumber(int buffer[],int *secondMax)
{
int i,max;
max = buffer[0]; /*假设第一个元素为当前最大数*/
*secondMax = MINNUMBER;/*存放次大数的单元初始化为无穷大*/
for(i = 1; i < ARRSIZE; i++)
{
if(buffer[i] > max) /*所比数大于最大数*/
{
*secondMax = max; /*修改次大数*/
max = buffer[i]; /*修改最大数*/
}
/*所比数大于次大数且小于最大数*/
else if (buffer[i] > *secondMax && buffer[i] < max)
*secondMax = buffer[i]; /*修改次大数*/
}
/*次大数的值未曾变化过*/
if(*secondMax == MINNUMBER)
{
return FIND_FAIL;
}
return FIND_SUCESS;
}
/*主函数*/
void main()
{
int array[ARRSIZE], result, secondMax, i;
printf("请输入数组元素:");
for(i = 0; i < ARRSIZE; i++)
{
scanf("%d", &array[i]);
}
result = GetSecondMaxNumber(array, &secondMax);
if(result = FIND_SUCESS)
{
printf("/n数组中的第二大数为%d", secondMax);
}
}
- 寻找数组中的第二大数
- 寻找数组中的第二大数
- 寻找数组中的第二大数
- 寻找数组中的第二大数
- 寻找数组中的第二大数
- 寻找N个数组中的第二大数
- 寻找数组中第二大数
- 寻找数组中第二大数
- 寻找数组第二大数和第K大数
- 查找数组中的第二大数
- 找数组中的第二大数
- 寻找无序数组中的第K大数
- 寻找无序数组中的第K大数
- 寻找无序数组中的第K大数
- 求出一个整型数组中的第二大数
- 寻找无序数组中的第K大数和前K大数
- 找数组第二大数
- 数组第二大数
- Linux - 用make进行工程编译
- 进程之间的通信
- 命令指令符大全
- atitit。html css框架Bootstrap Foundation的比较与不同 attilax大总结
- 指针变量做参数
- 寻找数组中的第二大数
- JAVA基础一大堆0810数据库小练习
- ZeroMQ下载、安装、编译
- 32.自定义tableViewCell
- OC_AddressBook_通讯录写入
- 类的复制构造函数调用
- Linux后门入侵检测方法以及工具
- 九度oj 1007
- lpa标签传播算法讲解及代码实现