我们假设执行每一基本步骤所需要的时间为一常量,第i步的执行时间可以用ci来表示,这样一来,如果知道每一行会被执行多少次就能知道每一行的执行时间
根据你的函数,可以设n=m-j,这就是输入规模,每一行执行时间按照c1,c2,c3,……来表示,下面的代码执行的基本时间和每行语句执行的次数可以表示如下:(值得注意的是,循环中for和while行的语句会多执行一次,因为要判断不能进入循环的那一个量)
用T(n)表示某个函数彻底完成的执行时间,意味着递归调用知道最后结果出来才算是彻底完成
                                    基本时间
               次数
int a[]={10,2,9,7,3,6,4,1}
            c1
                    1
order(int j,int m)
                    T(n)
        
{
    int i,temp;
                       c2
                    1
    if(j<m)
                           c3
                   1
    {
        for(i=j+1;i<=m;i++)
           c4
                    n+1
            if(a[i]<a[j])
             c5
                    n
            {
               temp=a[i];
             c6
                    n
               a[i]=a[j];
             c7
                    n
               a[j]=temp;
             c8
                    n
             }
        j++;
                          c9
                    1
        order(j,m);
                   T(n-1)
     }
}
这样,函数order的执行时间就可以表示为
T(n)=T(n-1)+(c2+c3+c4+c9)+(c4+c5+c6+c7+c8)n
用渐近式表示为T(n)=T(n-1)+O(n)的时间,其中O(n)表示为an+b的时间关系
递推T(n)式可以得到
T(n-1)=T(n-2)+O(n-1)
T(n-2)=T(n-3)+O(n-2)
可以看出,如果n的值非常大的话,O(n-1)和O(n)没多大区别,所以T(n)的时间复杂度可以表示为O(n^n),n的n次方的时间复杂度,在大数据量的情况下实在是不可取