寻找第二问题

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)     //second2函数找出第二小值
{
    int i,min1,min2;
    if(a[0]<a[1])             //若第1个数小于第2个数
    {
    min1=a[0];                //将a[0]赋给最小值
    min2=a[1];                //第a[1]赋给第二小值
   } 
   else {
       min1=a[1]; 
       min2=a[0];
   }
   for(i=2;i<n;i++)                  //从三个数开始遍历完
       if(a[i]<min2)                 //若第i个数小于第二小值
     {
       if(a[i]<min1){                 //并且小于最小值
           min2=min1;                 //将最小值赋给第二小值
           min1=a[i];                 //将第i个数赋给最小值
       }
       else
           min2=a[i];                //否则,若它位于最小值与第二小值中间,将它赋给第二小值
    }
    return (min2);                   //返回第二小值
   } 
 /*主函数输入n个数,存储在a数组中,调用second2函数,找出第二小值。*/ 
 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.运行结果

转载于:https://www.cnblogs.com/laurarararararara/p/10877852.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值