时间复杂度与空间复杂度

简介: 时间复杂度与空间复杂度

优先考虑时间复杂度

在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。

但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。

所以我们如今已经不需要再特别关注一个算法的空间复杂度。

🔎时间复杂度

一般所说时间复杂度为最坏情况下的时间复杂度

🌻大O渐近法

用1来取代执行次数中加法常数

举例:执行次数N2+2N+10——>N2+2N+1

只保留最高阶项

举例:执行次数N2+2N+1——>N2

如果最高阶项系数不为1,将其修改为1

举例:执行次数3N2——>N2


🌻举例1

void func1(int N){
        int count = 0;
        for (int i = 0; i < N ; i++) {
            for (int j = 0; j < N ; j++) {
                count++;
            }
        }
        for (int k = 0; k < 2 * N ; k++) {
            count++;
        }
        int M = 10;
        while ((M--) > 0) {
            count++;
        }
        System.out.println(count);
    }

共执行N2+2N+10次

大O渐近法表示则是O(N2)

O(N2+2N+10——>N2+2N+1——>N2)


🌻举例2

共执行2N+10次

时间复杂度:0(N)


🌻举例3

共执行M+N次

时间复杂度:0(M+N)

如果M和N相等,时间复杂度:0(N)


🌻举例4

共执行100次

时间复杂度:0(1)


🌻举例5

第一次嵌套的for循环执行N-1-0次,第二次嵌套的for循环执行N-1-1次,因为N的值在递减

共执行[(N-1)+(N-2)+(N-3)+…+1]次——>N*(N-1)——>也就是N2-N次

时间复杂度:0(N2)


🌻举例6

int binarySearch(int[] array, int value) {
        int begin = 0;
        int end = array.length - 1;
        while (begin <= end) {
            int mid = begin + ((end-begin) / 2);
            if (array[mid] < value)
                begin = mid + 1;
            else if (array[mid] > value)
                end = mid - 1;
            else
                return mid;
        }
        return -1;
    }


🌻举例7

int factorial(int N) {
        return N < 2 ? N : factorial(N-1) * N;
    }

递归的时间复杂度:递归的次数*递归后代码的执行次数

假设N为4,那么递归了4次

当N是一个未知数时,递归了N次

每次递归后代码均执行了1次,因为时一个三目运算符,只能选择其中一项

时间复杂度:O(N*1)——>O(N)


🔎空间复杂度

空间复杂度是指一个算法在运行过程中临时占用存储空间大小

也是采用大O渐近法表示

🌻举例1

空间复杂度:O(1)

这里没有计算数组的空间,因为数组作为参数是必须开辟空间的,而不是在运行过程中临时开辟存储空间


🌻举例2

空间复杂度:O(N+1)——>O(N)


🌻举例3

long factorial(int N) {
        return N < 2 ? N : factorial(N-1)*N;
    }

当N为3时,递归了3次,所以在栈上临时开辟了3块空间

当N是一个未知数时,临时开辟了N块空间

空间复杂度:O(N)

相关文章
|
存储 人工智能 缓存
空间复杂度介绍
空间复杂度介绍
133 0
|
1月前
|
机器学习/深度学习 存储 算法
一篇文章理解时间复杂度和空间复杂度
一篇文章理解时间复杂度和空间复杂度
32 0
|
5月前
|
算法 程序员 存储
时间复杂度与空间复杂度详解
时间复杂度与空间复杂度详解
|
6月前
|
算法
了解时间复杂度和空间复杂度
在学习数据结构前,我们需要了解时间复杂度和空间复杂度的概念,这能够帮助我们了解数据结构。 算法效率分为时间效率和空间效率
37 1
|
6月前
|
机器学习/深度学习 存储 算法
时间复杂度和空间复杂度
时间复杂度和空间复杂度
|
机器学习/深度学习 算法
时间复杂度和空间复杂度详解
时间复杂度和空间复杂度详解
266 0
|
6月前
|
机器学习/深度学习 算法 Windows
时间复杂度与空间复杂度
如何理解时间复杂度与空间复杂度
|
6月前
|
机器学习/深度学习 算法 搜索推荐
2.时间复杂度与空间复杂度
2.时间复杂度与空间复杂度
47 0
|
算法
【时间复杂度和空间复杂度】
【时间复杂度和空间复杂度】
59 0
|
存储 机器学习/深度学习 并行计算
空间复杂度
空间复杂度(Space Complexity)是用于描述算法在执行过程中所需占用空间大小的量度。空间复杂度通常与算法的输入规模成正比,表示算法在处理不同规模数据时所需的空间资源。空间复杂度可以帮助我们评估算法的效率,以及在实际应用中可能产生的内存消耗。
89 0