【发布时间】:2021-03-09 01:16:37
【问题描述】:
void swapminmax(int a[],int size){ //uses half the no of iteration to find min- max
int min,max= a[0];
int i;
for(i=0;i<=(size/2);i++){
if(a[i]>a[size-i-1]){
if(max < a[i]) max= a[i];
}
if (a[size-i-1]>a[1]) {
if(max<a[size-i-1]) max = a[size-i-1];
}
if(a[i]<a[size-i-1]){
if(min > a[i]) min = a[i];
}
else{
if(min >a[size-i-1]) min = a[size-i-1];
}
}
cout<<"min element: "<<min<<endl;
cout<<"max element : "<<max<<endl;
}
【问题讨论】:
-
一种可能的猜测方法是拥有一些正在工作的minimal reproducible example,并对其进行分析。如果您在 Linux 上编写代码,请使用
gcc -Wall -Wextra -O -g编译您的 minimal reproducible example,然后查看 time(7)。运行各种示例,对它们进行基准测试,使用GNUplot 绘制时间并尝试猜测时间复杂度。请注意,StackOverflow不是做我的家庭作业网站 -
复杂度受循环迭代次数和每次迭代比较次数的影响。除非您接受计算错误的非零概率,否则无论外部循环执行多少次迭代,都至少需要进行
size比较。