Algorithm 如何通过不同的索引更新方式获得while/for循环的复杂度顺序?
我正在检查复杂度问题的简单顺序,发现了以下问题:Algorithm 如何通过不同的索引更新方式获得while/for循环的复杂度顺序?,algorithm,time-complexity,big-o,analytics,Algorithm,Time Complexity,Big O,Analytics,我正在检查复杂度问题的简单顺序,发现了以下问题: int example(int max) { int i = 0; double x = 0.0; while ( i <= max ) { x = doStuff(x , i); //doStuff is O(i) i = i + 10 ; } } int示例(int max){ int i=0; 双x=0.0; 而(i情况i=i+10与i++没有太大区别:
int example(int max) {
int i = 0;
double x = 0.0;
while ( i <= max ) {
x = doStuff(x , i); //doStuff is O(i)
i = i + 10 ;
}
}
int示例(int max){
int i=0;
双x=0.0;
而(i情况i=i+10
与i++
没有太大区别:
整个算法的复杂度顺序为(其中/
为整数除法,m为max
):
O(0)+O(10)+O(20)+…+O((m/10)*10)
当O(x)+O(y)=O(x+y)时,我们可以这样写:
O(10(1+2+3+…+m/10))
我们可以应用以下公式:
O(10(m/10)(m/10-1)/2)
我们只需要最高阶的项,可以忽略其系数:
=O(m²)