寻找第二问题

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.运行结果

寻找第二问题

上一篇:睡美人


下一篇:基于百度AL平台人体检测实现人体关键点检测代码