怎么算法的时间复杂度

怎么确定算法的时间复杂度

int minSubArrayLen(int s, int* nums, int numsSize){

    int left = 0;

    int right = 0;

    int min = 0;    

    int sum = 0;   

    while (right < numsSize){

        sum += nums[right];

        right++;

        while (sum >= s){

            if (min == 0){

                min = right - left;

            }

            else{

                if(min > right - left)

                min = right - left;       

            }

            sum -= nums[left];

            left++;

        }

    }

    return min;

}




在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n}=0(f(n))。它表示随问题规模n的增大,算法执行时间的埔长率和 f(n)的埔长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f( n)是问题规横n的某个函数。

  • 时间复杂度为 O (1),代码只被执行一次。
  • 时间复杂度为 O (n),比如常见的遍历算法。 也就是一个for循环的时间复杂度。
  • O(n^2)就是嵌套for循环,就是两个for循环,是不是相当于运行了n*n次。比如冒泡和选择排序。
  • 再比如 O (logn),( log 是以 2 为底)。二分搜索就是 O (logn) 的算法,每找一次排除一半的可能。
  • O (nlogn) 同理,就是 n 乘以 logn,归并排序就是 典型的例子。