2019-05-16 20:37:06
1.问题描述:在实际问题中,通常会遇到许多第二的问题。比如:第二名,第二大和第二小等。在已知的n个数据中找出其中第二小的数据。
2.根据问题描述,利用数组a[]存储已知数据,定义两个变量,min1和min2,分别用来存储数据中的第一小值和第二小值,对已知数字进行比较之后,便可从中选出第二小的数据,输出即可。此算法的时间复杂度为O(n).
3.算法说明
类型 | 名称 | 含义 |
算法 | second2(int a[],int n) | 一趟遍历求第二小数据 |
形式参数数组 | a | 存放已知数据 |
形式参数变量 | n | 数据个数 |
变量 | min1 | 最小值 |
变量 | min2 | 第二小值 |
4.代码实现
#include<stdio.h> int second2(int a[],int n) { int i,min1,min2; if(a[0]<a[1]) { min1=a[0]; min2=a[1]; } else { min1=a[1]; min2=a[0]; } for(i=2;i<n;i++) if(a[i]<min2) { if(a[i]<min1){ min2=min1; min1=a[i]; } else min2=a[i]; } return (min2); } int main(){ int a[100],i,m; printf("请输入数据个数n:"); scanf(" %d",&m); printf("请输入n个已知数据:"); for(i=0;i<m;i++) scanf("%d",&a[i]); printf("第二小的数据为%d",second2(a,m)); }
5.运行结果