程序设计 = 数据结构 + 算法。
数据结构定义:
数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
数据:描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号的集合。例如:整型、实型等数值类型,还包括声音、字符、图像、视频等非数值类型。
总结:数据就是一种符号,这些符号必备两个前提,1:可以输入到计算机中;2:能够被计算机处理。
数据元素:是组成数据、有一定意义的基本单位,在计算机中通常做为整体处理,也被叫做记录。
数据项:一个数据可以由若干个数据项组成。数据项是数据不可分割的最小单位。
数据结构可根据不同角度分为逻辑结构和物理结构
逻辑结构(针对问题),分为以下4种:
1、集合结构:
特点:各数据元素“平等”;
2、线性结构:
特点:数据元素之间的关系是一对一。
3、树型结构:
特点:数据元素之间的关系是一对多;
4、图形结构:
特点:数据元素之间的关系是多对多;
物理结构(针对内存)
顺序存储
链式存储
算法:
定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示为一个或多个操作。
算法的基本特性:
1、输入
2、输出
3、有穷性
4、确定性
5、可行性
算法的其它特性:
可读性
健壮性
判断算法的优劣可通过算法时间复杂度和算法空间复杂度来衡量。
算法时间复杂度
算法时间复杂度的大O表示法:
1、用常数1取代运行时间中的所有加法常数。3->1 O(1)
2、在修改后的运行次数函数中,只保留最高阶。n^3+2n^2+5 -> O(n^3)
3、如果最高阶项存在且不是1,则去除与这个项相乘的常数。2n^3 -> O(n^3)
时间复杂度术语:
1. 常数阶
2. 线性阶
3. 对数阶
4. 平方阶
5. 立方阶
6. nlog阶
7. 指数阶(不考虑) O(2^n)或者O(n!) 除非是非常小的n,否则会造成噩梦般的时间消耗. 这是一种不切实际的算法时间复杂度. 一般不考虑!
常用的算法时间复杂度所耗费时间从小到大的排列依次是:
算法空间复杂度
定义:通过计算算法所需的存储空间实现。一般情况下,一个程序在机器上执行时,除了需要存储程序本身的指令、常数、变量、输入数据之外,还需要存储对数据操作的存储单元,即这个就是算法空间复杂度。也采用大O表示法。
通常,算法时间复杂度指运行时间的需求。空间复杂度指存储空间的需求。
网友评论