数据结构
概念
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
数据结构的三个方面
算法
概念
解决特定问题的求解步骤的描述,通俗说就是解决问题的技巧和捷径。
算法的五个特性s
零个输入的情况,比如我们要打印HelloWorld,就不要输入
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
算法设计的要求
- 正确性:算法的正确性是指算法至少具有输入,输出和加工处理无歧义,可以正确反映问题的需求,获得正确的答案。
- 一般关于“正确”的理解包含四个层次:
- 算法程序没有语法错误
- 算法程序能够根据正确的输入的值得到满足要求的输出结果
- 算法程序能够根据错误的输入的值得到满足规格说明的输出结果
- 算法程序对于精心设计的,极其刁难的测试数据都能满足要求的输出结果
- 一般关于“正确”的理解包含四个层次:
- 可读性:算法设计的目的就是解决问题活着帮助别人解决问题,一定要是便于阅读和理解。不然算法只能算很失败。
- 健壮性:对于各种不合理的输入,要有相应的处理,不能直接产生异常或报错。
- 时间效率高和空间存储量低:解决以上问题之后,尽量要求算法效率高,占用内存小。
时间复杂度
概念
进行算法分析时,语句总的执行次数T(n)是关于输入规模n的函数,分析T(n)随着n的变化情况,时间复杂度记作T(n)=O(f(n))。随着输入规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作时间复杂度。(时间=执行次数)
求解时间复杂度的方法(求O())
- 用常数1代替运行时间中的所有加法常数
- 保留修改后的运行函数中的最高阶项
- 如果最高项存在,把最高项系数化为1
常用的时间复杂度排序
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
空间复杂度
一般我们使用空间换取时间,因为一般来说,空间上的提高比较好实现。