关于算法的认知

算法的特性 算法是为了解决某类问题而规定的一个有限长的操作序列. 一个算法必须满足以下五个重要特性: 1. 有穷性.一个算法必须总是在执行有穷步后结束,且每步都必须在有穷时间内完成. 2. 确定性.对于每种情况所应执行的操作,在算法中有确定的规定,不会产生二义性,使算法的执行者与阅读者都能明确知道其中的含义. 3. 可行性.算法的所有操作都可以通过已经实现的基本操作运算执行有限次来完成. 4. 输入.一个算法有零个或多个输入.当用函数描述算法时,输入往往时通过形参表示. 5. 输出.一个算法有一个或多个输出,它们是经过算法加工后结果,无输出的算法没有意义. 算法的优劣评判 一个算法的优劣应该有以下方面来评判: 1. 正确性. 在合理的数据输入下,能够在有限时间内得到正确的结果. 2. 可读性.一个好的算法首先是能够直观的阅读,便于人类理解. 3. 健壮性.当输入的数据非法时,好的算法能够进行正确的反应,而不会崩溃或输出奇怪的结果. 4. 高效性.一个好的算法应该能够在消耗最少的资源(时间/内存使用率/CPU占有率)下而得出正确的结果.可以使用时间复杂度和空间复杂度来衡量.

Read More

关于数据结构的认知

数据结构是相互之间存在一种或多种特定关系的数据元素的集合. 数据结构包括逻辑结构和物理结构两个层面. 逻辑结构 逻辑结构存在两个要素: 1. 一是数据元素. 2. 二是关系. 数据元素就是存放的数据对象,有各式各样的类型,而关系是数据元素之间的逻辑关系.根据数据元素之间的不同特性,通长有四类基本结构:集合结构,线性结构,树结构,图结构/网状结构.除线性结构外,其它皆可称之为非线性结构. 集合结构: 数据元素除了同属同一集合外,无其他关系.如确定这两个学生是否属于同一个班级. 线性结构: 数据元素之间存在一对一关系.如学生按照入学时间排序. 树结构: 数据元素之间存在一对多关系.如班长管理多个组长,组长管理组员. 图结构: 数据元素直接存在多对多关系.如多位同学之间的朋友关系. 物理结构 物理结构也是数据对象在存储中的存储结构.数据元素在计算机内用一个节点来表示. 而在存储过程中,数据元素有两种基本的存储结构,分别是顺序存储结构和链式存储结构. 顺序存储结构: 顺序存储结构要求所有元素以此存放在一片连续的存储空间中. 链式存储结构: 链式存储结构则无需占用一整片的存储空间,它是随机存放.但为了表示节点的关系,需要给每个节点附加指针字段,用于存放后继元素的位置.

Read More