今天学习了数据结构中的算法,了解了算法中有2个概念【时间复杂度】、【空间复杂度】
顾名思义,意思和他们的名称差不多,时间复杂度,就是说算法在运行过程中所耗用的时间,而空间复杂度,则是算法运行过程中所占用的空间(内存、硬盘等等)。
时间复杂度的计算中,要求有一定的数学功底,比如给我们一串数字,我们能转换成相应的数学公式
在算法中我们怎么去衡量【时间复杂度】、【空间复杂度】的复杂级别呢,这里有一个专业名词叫大O阶。
推导大O阶方法:
1、用常量1取代算法中的所有加减法操作。
2、在修改后的运行次数函数中,只保留最高阶项。
3、如果最高阶项存在的不是1,则去除与这个项相乘的参数。
下面我截取的一个例子
根据推导大O阶方法:
1、上面运行的次数3,用常量1表示。
2、没有最高阶
下面这个例子同上一个结果也是一样的
根据推导大O阶方法:
1、上面运行的次数12,用常量1表示。
2、没有最高阶
例子:
在这段程序中,会运行n/2次。
根据推导大O阶方法:
1、上面运行的次数n/2,不是常量。
2、最高阶,X=log2n。
再如下面平方阶的例子
一共循环n x n次
根据推导大O阶方法:
1、上面运行的次数n x n,不是常量。
2、最高阶,X=n2。
再看例子
根据推导大O阶方法:
这里要看我最后一个红框内容,他用到了推导方法中的第三点,如果最高阶项存在的不是1,则去除与这个项相乘的参数。
所以最终大O阶为:O(n2)
常见时间复杂度:
专业术语含义:
参考书籍《大话数据结构》算法:
算法是解决特定问题求解步骤的描述,在计算机中为指令有序序列,并且每条制定表示一个或多个操作。
算法特性:
有穷性、确定性、可行性、输入、输出
算法设计的要求:
正确性、可读性、健壮性、高效率和低存储量。