本人是南昌大学软件工程专业的学生,大学期间浑浑噩噩混日子。临毕业才发现自己一无所有。现在开始从零开始复习编程基础
2018年3月13日
1.数据结构三要素:逻辑结构,存储结构,运算集合。
2.对于一个逻辑结构B=(K,R),如果它只有一个开始结点和一个结束结点,而其他的每一个结点有且仅有一个前驱和一个后继,称为线性结构。如果它有一个开始结点,多个终端结点,每一个结点有且仅有一个前驱,称为树形结构。如果每个结点都可以有多个前驱和后继则是图形结构。树形结构和图形结构都是非线性结构。
3.数据的存储结构即数据在计算机中的存储方式,主要由以下四种
顺序存储:顺序存储通常用于存储具有线性结构的数据。将逻辑上相邻的结点存储在连续的区域M的相邻存储单元中,使得逻辑相邻的结点一定是物理位置相邻。这种映像是通过物理上存储单元的相邻关系来体现结点间相邻关系的。
链式存储:通过指针将不相邻的物理存储空间连接到一起
索引存储
散列存储:构造一个从集合K到存储区域M的函数h,该函数定义域为K,值域为M,K中的每个结点ki在计算机中的存储地址由h(ki)确定。
4.通常把数据本身所占的存储空间的大小与整个数据结构所占的存储空间的大小之比称为数据结构的存储密度。
5.一般而言,数据的运算包括插入、删除、检索、输出和排序。(输出:将一个结构中所有结点的值打印输出)。
6.算法是求解问题的一种方法或一个过程。更严格地讲,算法是由若干条指令组成的有穷序列,并满足以下5个特征:
1)有穷性 算法的执行必须在有限步内结束
2)确定性 算法的每一个步骤必须是确定的,无二义性
3)输入 算法可以有0个或多个输入
4)输出 算法一定有输出结果
5)可行性 算法中的运算都必须是可以实现的
程序是用计算机语言表达的求解一个问题的一系列指令的集合,它和算法的主要区别是,算法具有有穷性,程序不需要具备有穷性。有的程序不在有限的时间内终止,如一个操作系统正常清空下永远不会终止。
7.算法的优劣主要由算法执行的时间和所需要的存储空间来衡量。算法的时间复杂度采用算法执行过程中基本操作的执行次数,即计算量来度量。一些具体的函数的复杂度表示:
35 O(1)
2n+7 O(n)
n^2+10 O(n^2)
2n^3 O(n^3)
算法一般只比较量级,不比较细微差别。 按数量级递增排列,常见的算法的时间复杂度有 O(1)<O(log2 N)<O(n)<O(nlog2N)<O(n^2)<O(n^3)<.....O(2^n)。一般情况下,人们更感兴趣的是时间复杂度而不是空间复杂度
8.在一个长度为n的顺序表中插入(删除)一个元素平均需要移动表中的一半元素。该算法的时间复杂度是O(n)。