我有一个数组,其中包含 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/