C#数据结构一:基础知识
在学习数据结构之前先要学习几个相关的概念及术语
1、数据(Data):数据是外部世界信息的载体,它能被计算机识别、存储和加工处理,是计算机程序加工的原料。
2、数据元素(Data Element)和数据项:数据元素是数据的基本单位,有时也被称为元素、结点、顶点、记录等。一个数据元素可由若干个数据项组成;数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain).之间关系为数据项组成数据元素,数据元素组成数据(,数据组成文件)。使用数据库模型来举例说明:
3、数据对象(Data Object):性质相同的数据元素的集合,是数据的一个子集,例如字母表对象{a,b,c,…x,y,z}
4、数据类型(Data Type):数据的取值范围和对数据进行操作的总和。数据类型规定了程序中对象的特性;程序中每个变量、常量或表达式的结果都应该属于某种确定的数据类型。数据类型可分可两类:一类是非结构的原子类型,如C#的基本类型;另一类是结构类型,其成分由多个结构类型组成,可以分解;如C#的数组类型
。5、数据结构(Data Struct):相互之间存在一种或多种关系 的数据元素的集合。通常有4类基本数据结构:
1)集合(Set)
2)线性结构(Linear Structure)
3)树形结构(True Structure)
4)图状结构(Graphic Structure)
数据结构(Data Structrue)简记为DS,是一个二元组,DS=(D,S),其中D为数据元素的有限集合,R是数据元素之间关系的有限集合。
6、算法(Algorithm):是对某一特定类型的问题的求解步骤的一种描述,是指令的有限序列。它具有有穷性(Finity)、确定性(Unambiguousness)、输入(Input)、输出(Output)和有效性(Realizability)。针对算法优劣的评价标准包括正确性(Correctness)、可读性(Readability)、健壮性(Robustness鲁棒性)、运行时间(Running Time)和占用空间(Storage Space)。
7、算法的时间复杂度(Time Complexity):指算法的运行时间与问题规模的对应关系。通常把算法中基本操作重复执行的次数作为算法的时间复杂度。它是与问题规模n相关的函数。记作T(n)=O(f(n)),例如T(n)=n(n+1)。
常见时间复杂度举例:
1)、O(n)
x=n; y=0; while(y<x){ y=y+1; }
2)、O(n2)
for(int i=1;i<n;++i){
for(int j=0;j<n;++j){ A[i][j]=i*j; } }
x=n; y=0; while(x>=(y+1)*(y+1)){//即x=y2+1 y=y+1; }
关于算法复杂度,推荐一篇好文http://www.matrix67.com/blog/archives/529
8、高等数学相关基础知识
计量单位(Unit):字节为B,位缩写为b,兆字节为MB,千字节缩写为KB
阶乘函数(Factorial Function):5!=5*4*3*2*1=120,特别地,0!=1
取下整和取上整(Floor and Ceiling):⌊3.4⌋=3(下整) ,⌈3.4⌉=4(上整)
取模操作符(Modulus):n=q*m+r ⇒m=n/q
对数(Logarithm):若ab=N,那么数b叫做以a为底N的对数,记作logaN=b,其中a叫做对数的底数,N叫做真数。
递归(Recursive):算法调用自己或间接调用自己。
========================================================
C#数据结构系列文章:
1、基础知识
4、双向链表Double Linked List
5、循环链表Circular Linked List
6、栈Stack
7、队列Queue
8、串
9、数组Array
10、树Tree
...
我的主页:http://www.51obj.cn/