查找数组中最小的两个数

查找数组中最小的两个数


要求:给定一个数组,找出其中最小的两个数

思路:

代码:

void findTwoMin(int* data, int *min1, int *min2, int length){
  int temp;
  *min1 = data[0];
  *min2 = data[1];
  if(*min1 > *min2){
    temp = *min1;
    *min1 = *min2;
    *min2 = temp;
  }
  for(int i=2; i<length; i++){
    if(data[i] < *min1){
      *min2 = *min1;
      *min1 = data[i];
    } else if (data[i] < *min2) {
      *min2 = data[i];
    }
  }
}

以上

测试代码:

#include <stdio.h>

void findTwoMin(int* data, int *min1, int *min2, int length);

int main(int argc, char *argv[])
{
  int data[100];
  int n = 10;
  for(int i=0; i<n; i++){
    scanf("%d", &data[i]);
  }
  int min1, min2;
  findTwoMin(data, &min1, &min2, n);
  printf("min1 = %d\n", min1);
  printf("min2 = %d\n", min2);

  return 0;
}

void findTwoMin(int* data, int *min1, int *min2, int length){
  int temp;
  *min1 = data[0];
  *min2 = data[1];
  if(*min1 > *min2){
    temp = *min1;
    *min1 = *min2;
    *min2 = temp;
  }
  for(int i=2; i<length; i++){
    if(data[i] < *min1){
      *min2 = *min1;
      *min1 = data[i];
    } else if (data[i] < *min2) {
      *min2 = data[i];
    }
  }
}

输出结果:


以上

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tailor_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值