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²)