为什么我的for循环只运行2次而不是10次?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的for循环只运行2次而不是10次?相关的知识,希望对你有一定的参考价值。

我正在尝试在O(n)空间和时间复杂度的数组中找到第三高的数字。我的程序显然是错误的,但这不是问题。我在thirdhighestnum函数中的for循环似乎只运行2次。我似乎找不到原因。谁能帮我。对不起这个基本问题,我是这里的初学者。

#include<iostream>

using namespace std;

int thirdhighestnum(int a[],int size)
 
    cout<<" "<<size<<endl;
    int first=a[0],second=0,third=0;
    for(int i=1;i<size;i++)
    
        cout<<a[i]<<";"<<endl;
        if(a[i]>first)
        
            first=a[i]; 
            if(a[i+1]>first)
            
                second=first;
                first=a[i+1];
                if(a[i+2]>first)
                   third=second;
                    second=first;   
                    first=a[i+2];

                
            
            cout<<i<<endl
            return third;
        
    

int main()
  int num,a[10];
    cout<<"Enter the elements in the array"<<endl;
    for(int i=0;i<10;i++)
        cin>>a[i];
    cout<<"Third highest number is "<<thirdhighestnum(a,10)<<endl;
    return 0;


答案

这是return third语句的位置。任何数字大于第一个数字时,它就会退出thirdhighestnum函数并返回一个值。将其放在for循环之外,应该没问题。

另一答案

这被称为nth_element,库函数可以为您完成此操作。至于为什么代码失败,逻辑上就有缺陷

for(int i=1;i<size;i++)

    // some code
    if(a[i]>first)
    
        // some more code
        cout<<i<<endl
        return third;
    

因此您的代码在a [i]大于第一个时第一次退出。

另一答案

从函数中获取return并在first变得大于a[i]时终止循环,这是在输入1 2 3 4 5 6 7 8 9 10的情况下仅运行两次的原因>

以上是关于为什么我的for循环只运行2次而不是10次?的主要内容,如果未能解决你的问题,请参考以下文章

Java短路混淆

循环排序:为啥最外面的循环运行(n-1)次

for 循环是不是只在 python 类中运行一次?

为啥我的 for 循环没有为 h[i] 运行 5 次?

for循环套for循环

为啥这个for循环只输出一次?