C 如何减少执行时间??我应该使用函数还是继续使用嵌套循环
我必须在这段代码中减少执行时间。在这个问题中,n的值可能高达10^8。因此,我认为嵌套循环并没有那么好,因为它对于大数据的存储非常滞后。所以我想知道我是否使用函数而不是内部循环。这个想法是否能缩短执行时间?? 或者,即使我使用Functions,情况也是一样C 如何减少执行时间??我应该使用函数还是继续使用嵌套循环,c,C,我必须在这段代码中减少执行时间。在这个问题中,n的值可能高达10^8。因此,我认为嵌套循环并没有那么好,因为它对于大数据的存储非常滞后。所以我想知道我是否使用函数而不是内部循环。这个想法是否能缩短执行时间?? 或者,即使我使用Functions,情况也是一样 #include <stdio.h> long long a[500001]={0}; int main() { long long n,i,j,flag,sum=0,temp,count=0; scanf("%lld",&a
#include <stdio.h>
long long a[500001]={0};
int main()
{
long long n,i,j,flag,sum=0,temp,count=0;
scanf("%lld",&n);
for(i=0;i<n;i++)
scanf("%lld",&a[i]);
for(i=0;i<n;i++){
for(j=0;j<n;j++)
if(a[j]>=a[i])
count++;
flag=a[i]*(count);
if(flag>sum)
sum=flag;
count=0;
}
printf("%lld",sum);
return 0;
}
#包括
长a[500001]={0};
int main()
{
长n,i,j,标志,和=0,温度,计数=0;
scanf(“%lld”、&n);
对于(i=0;i我认为您的问题在于算法:
for(i=0;i<n;i++){
for(j=0;j<n;j++)
产出:60
复杂性
如果排序是O(nlog(n)),我的算法是O(n),那么得到的是O(nlog(n))复杂度。
您应该使用更高效的算法,它可能不依赖于函数。如果n
增加到100000000,为什么要用更低的数字声明a?您需要更高效的数据结构。函数和循环是针对不同问题的不同构造。您正在比较苹果和香蕉(橙子还是太接近苹果了——两个都是圆的)。好的,知道了。我的算法效率不高。你觉得复杂度如何。你能推荐一个我可以从中学习复杂度的网站吗。或者你可以在这里告诉我。但是顺便说一句,你的解决方案可能需要更多的时间,因为你需要先对数据进行排序,然后才能找到总数。我想这可能需要更多的时间。你的看法是什么?@user5910213 y你可以找到关于时间复杂性的信息。当你使用大o(o)时,你只需要得到最慢的操作。因为如果你有两个操作,一个o(n)和另一个o(n^2),当n取大值时,我是说你的代码不会花费太多时间,因为你需要先对元素排序,然后再进一步排序
int max=0,tmp=0;
for(i=0;i<n;i++){
tmp=array[i]*(i+1);
if(max<tmp) max=tmp;
}
tmp | max | iteration
0 |0 | 0
53 |53 | 1
30*2=60 |60 | 2
20*3=60 |60 | 3
14*4=56 |60 | 4
4*5=20 |60 | 5