c++ - 在 C++ 中查找数组的最小值和第二小值

标签 c++ arrays

我有一个数组,其中包含 5 个介于 0 到 99 之间的随机数。我想找到该数组中最小和第二小的数字,我有下面的代码,但如果 first元素是最小的数。我怎样才能解决这个问题?感谢您的任何帮助! :)

int numbers[5];

int main()
{
srand(time(NULL));

for(int i=0; i<5; i++){
    numbers[i]=rand()%100;
    cout<<numbers[i]<<" ";
}

cout<<endl;

int smallest = numbers[0], secondSmallest=numbers[0];

for(int i=0; i<5; i++){
    if(numbers[i]<smallest){
        secondSmallest=smallest;
        smallest=numbers[i];
    }
    else if(numbers[i]<secondSmallest)
        secondSmallest=numbers[i];
}
cout<<"Smallest number is : "<<smallest<<endl;
cout<<"Second smallest number is : "<<secondSmallest<<endl;
}

编辑:这需要在不根据分配要求对数组进行排序的情况下完成。

最佳答案

另一种无需使用两个循环即可完成此操作的方法。处理重复项。

    int smallest = numbers[0],secondSmallest = numbers[0];
    for(int i=0;i<5;i++){
        if(numbers[i]>smallest){
            if(numbers[i]<secondSmallest || smallest==secondSmallest){
                secondSmallest = numbers[i];
            }
        }else{
            if(secondSmallest>smallest && numbers[i]!=smallest){
                secondSmallest=smallest;
            }
            smallest = numbers[i];
        }
    }

关于c++ - 在 C++ 中查找数组的最小值和第二小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159811/

相关文章:

c++ - 在 C++ 中用于用户输入的二维数组

c# - "Private Data"在 VMMAP 中定义了什么?

c++ - 为什么需要在结构中填充?

c++ - 在类中使用 libuv

c++ - 如何从开始在对象的成员函数中执行的 c++ boost thread_group 创建新线程?

php - 如何在php中对多个表单字段数组进行排序?

初始化后具有固定容量的 C++ vector

c - 在 C 中移动单词时跳过标点符号

PHP - 从多维对象数组中检索一个()对象

c - 为什么在下面的函数中递增数组 "a"不是错误?