程序设计=数据结构+算法
数据结构
数据结构就是数据元素相互之间存在一种或多种特定关系集合。
数据结构分为逻辑结构和物理结构。
0.逻辑结构
逻辑结构是指数据对象中数据元素之间的相互关系
0)集合结构
集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他不三不四的关系。
1)线性结构
线性结构:线性结构中的数据元素之间是一对一的关系。
2).树形结构
树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。
3)图形结构
图形结构:图形结构的数据元素是多对多的关系。
1.物理结构
物理结构是指数据的逻辑结构在计算机中的存储形。我们要
将数据元素存储到计算机的存储器中。
存储器主要是针对内存而言的 ,像硬盘、软盘、光盘等外部存储器的数据组织通常用文件来描述。
0)顺序存储结构
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
1)链式存储结构
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
链式存储结构的数据元素 存储关系并不能反映其逻辑关系,因此需要一个指针存放数据元素的地址,这样子通过地址就可以找到相关数据元素的位置。
算法
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。技巧和方式
0.算法的特征
0)输入
- 算法具有零个或多个输入。
- 输入参数都是必要的。
1)输出
- 算法至少有一个或多个输出。
- 算法是一定要输出的,输出的形式可以是打印形式输出,也可以是返回一个值或多个值等。
2)有穷性
- 指算法在执行有限的步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。
3)确定性
- 算法的每一个步骤都具有确定的含义,不会出现二义性。
- 算法在一定条件下,只有一条执行路径,相同的输入只能有唯一的输出结果。
随机数:
计算机中的随机数其实是伪随机数。
随机生成函数rand()需要一颗种子才能生成随机数。
但是如果你给的种子是一样的,那么生成的随机数不变。
所以算法有确定性一个输入,有唯一一个输出。
想要生成随机数需要用到时间个srand函数来生成种子放到rand中,时间一直变化,所以生成数是可以看成是随机的。
4)可行性
- 算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。
1.算法设计的要求
0)正确性
算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义、能正确反映问题的需求、能够用得到问题的正确答案。
1)可读性
- 算法设计的另一目的是为了便于阅读、理解和交流。
- 我们写代码的目的,一方面是为了让计算机执行,另一个是为了便于他人阅读和自己日后阅读修改。
2)健壮性
- 当输入数据不合法时,算法也能做出相关处理,而不是产生异常、崩溃或莫名其妙的结果。
3)时间效率高和存储量低
- 程序运行速度要快
- 程序所占内存要低