群集

来源:互联网 发布:淘宝买东西寄错地址 编辑:程序博客网 时间:2024/06/06 22:24
群集(Collection)
定义:结构化的数据类型,作用是存储数据并且提供数据向/从群集中添加、删除和更新操作,以及对群集的不同属性值的设置与返回操作。
分类:线性群集(数组)、非线性群集(树、堆、图、集)。
线性群集可能是直接存取群集,也可能是顺序存储群集;非线性存取群集可以是层次群集,也可以是组群集。
线性群集
直接存取群集最常见的实例就是数组,其次还有字符串和结构。
数组不仅是一种数据类型也是一种类。可以是静态的,以固定元素的数量;也可以是动态的,通过ReDim或ReDim Preserve语句来增加数组元素的数量。
数组内元素的存储是连续的,因此对数组元素进行插入或删除操作并不那么高效,这里可以使用ArrayList类进行补充。
字符串也是作为类进行实现的,因此它具有数量庞大的方法以对字符串进行操作。
字符串是固定的,一旦被初始化就不能被改变,修改字符串时,会创建一个字符串的副本,而不改变原始的字符串,这一机制影响了对字符串的操作效率,因此在C#提供StringBuilder类来进行改进。
结构也可以称之为记录。类似于类。
顺序存取群集:即线性表,把群集元素按顺序存储的表。创建时没有大小限制,因此是动态的,可自由收缩扩展。
线性表中的元素不能直接存取访问,而是要根据其位置进行相关的操作。所以要想访问某个元素就需要遍历线性表,找到它的位置。可以单向从前到后,也可以双向遍历。
线性表可以是有序的,也可以是无序的。
栈:后进先出结构。入栈(push)、出栈(pop)。
队列:先进先出结构。入队、出队。可用于调度操作系统任务、模拟研究等。
优先队列:队列的一种特殊类型。允许最先移除队列的数据项具有最高优先级(认真品读这句话)。
通用索引群集:包括散列表和字典。
非线性群集
层次群集:是一组划分了层次的数据项集合。
树:是一种最常见的层次群集,比如说linux文件系统。二叉树是树结构的一种特殊类型,书中每个节点最多有两个子节点。二叉树可以变成二叉查找树,极大地提高了查找大量数据的效率,其方法是依据从跟到要存储数据的节点的路径为最短路径的方式来放置节点。
堆:树的另一种类型。把最小数据值始终放在根节点上,对堆的操作会导致堆重组,以保证最小数值始终位于根节点,利用这一特点就可以进行排序,称之为堆排序。
组群集:无序的数据项组成的非线性群集称为组。
集合:集合中的数据项无序,且每个数据值都唯一,在集合上执行的操作包括联合和交叉。
图:由节点集合和与节点相连的边集合组成。
网络:特殊类型的图,它的每一条边都被赋予权值。
原创粉丝点击