c语言经典算法——查找一个整数数组中第二大数

时间:2021-07-23 14:56:17

题目: 实现一个函数,查找一个整数数组中第二大数。

算法思想:

设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1赋给max2,使原先最大的数成为第二大的数,再将这个数a赋给max1,如果这个数a比max1小但比max2大,则将这个数a赋值给max2,依次类推,直到数组中的数都比较完。

c语言代码:

 #include<stdio.h>
#include<stdlib.h>
#define N 10
void produce_random_array(int array[], int n);
void show_array(int array[], int n);
int search_second_max(int array[], int n);
int main(int agrc, char *agrv[])
{
int array[N];
produce_random_array(array, N);
printf("原数组如下:\n");
show_array(array, N);
printf("\nthe second_max is: %d\n", search_second_max(array, N));
system("pause");
return ;
}
void produce_random_array(int array[], int n)
{
int i;
srand(time(NULL));
for (i = ; i < n; i++)
{
array[i] = rand() % ;
}
}
void show_array(int array[], int n)
{
int i;
for (i = ; i < n; i++)
printf("%-3d", array[i]);
}
int search_second_max(int array[], int n)
{
int max1, max2, i;
max1 = array[];
for (i = ; i < n; i++)
{
if (array[i]>max1)
{
max2 = max1;
max1 = array[i];
}
else
{
if (i == )
max2 = array[i];
else if (array[i]>max2)
max2 = array[i];
}
}
return max2;
}