设n是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。 void fun2(int b[],int n) { int i,j,k,x; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(b[k]>b[j]) k=j; x=b[i];b[i]=b[k];b[k]=x; } }
时间: 2024-03-30 19:36:50 浏览: 79
试写一时间复杂度为n的算法,并按要求改造表L
这个程序片段是一个选择排序(Selection Sort)的实现,它的时间复杂度是 $O(n^2)$。外层循环需要执行 $n-1$ 次,内层循环需要执行 $n-i-1$ 次,因此总的时间复杂度是:
$$1+2+3+\cdots+(n-1) = \frac{n(n-1)}{2} = O(n^2)$$
因此,这个程序片段的时间复杂度是 $O(n^2)$。
阅读全文