![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C#数据结构笔记
文章平均质量分 79
以前有在中国大学MOOC上学习了C++版的电子科技大学的数据结构与算法课程,现以C#为基础,再次学习一下,记录自己的学习笔记
LG_985938339
长沙理工大学机械毕业,目前深圳从事java工作,努力进大厂
展开
-
时间复杂度与空间复杂度
时间复杂度与空间复杂度在进行一个算法的设计的时候,对它的算法复杂性的分析也是必不可少的,而算法复杂性呢,就是算法运行锁需要的计算机资源的量,它有两种表现形式,需要时间资源的量称为时间复杂度,而需要空间资源的量呢则称为空间复杂度。时间复杂度的分析一个算法的时间复杂度,与算法的规模n、该算法中执行某种语句所消耗的时间及其执行次数是有关系的,当然了,同一时间复杂度的算法在不同的计算机上的表现是不一样的,时间复杂度不与硬件设备相关联。一个算法,它就是由我们用代码语句来表示的,而算法的执行效率、它原创 2020-09-23 22:43:01 · 84 阅读 · 0 评论 -
排序二叉树和几种遍历方法的C#简单实现
排序二叉树和几种遍历方法的简单实现排序二叉树的介绍二叉树是一种非线性的数据结构,二叉树有一个根节点,每个节点最多有两个子节点,树则是由多个节点组成的有限集合。排序二叉树是一种特殊的二叉树,它需要符合以下条件:1.若它的左子节点不为空,那么左子节点的值要小于它的值;1.若它的右子节点不为空,那么右子节点的值要大于它的值;排序二叉树的插入实现 public class BinaryTree { public class Node {原创 2020-09-06 20:06:39 · 240 阅读 · 0 评论 -
哈希表和字典的实现原理
哈希表和字典哈希表哈希表的介绍哈希表也叫散列表,它是根据关键码值而直接进行访问的数据结构,它把一个键直接映射到某个位置而进行访问和记录,这个映射函数就叫做哈希函数,而这个存放记录的数组就像叫做哈希表。哈希表可以通过键直接访问到所存储的值,其效率和数组直接访问数据相当,时间复杂度是O(1),并且在插入和删除操作的时候,时间复杂度仍然是O(1),与链表的效率相当,因此,在进行大量数据的访问和插入删除操作的时候,哈希表是一个很好的选择。哈希表是通过哈希函数在键和存储位置之间建立一个映射关系,然后原创 2020-09-06 15:55:23 · 1122 阅读 · 0 评论 -
C#中栈的实现原理
栈的实现栈的介绍栈是一种先进后出的数据结构,它也是一种线性表,它允许在栈顶插入和取出元素。栈也有两种两种实现方式,一种是用链表实现,一种是用顺序表实现。自定义一种链表方式实现栈class SelfStack<T> { Node _top; public void Push(T value) { if (_top==null) { _top原创 2020-08-28 19:27:26 · 743 阅读 · 0 评论 -
C#中队列的实现原理
队列队列介绍队列是一种先进先出的数据结构,它是一种线性表,允许在表的尾部插入元素,在其首部删除元素。队列是一种非常常见和重要的数据结构,排队就是队列在生活中的示例。队列有两种实现方式,一种是用链表实现队列,还有一种是用顺序表来实现队列。自定义一种链表方式实现队列class SelfQueue<T> { Node _front; Node _back; public void Enqueue(T value)原创 2020-08-27 22:55:44 · 1112 阅读 · 1 评论 -
几种简单的排序算法
三种简单的排序算法冒泡排序选择排序插入排序冒泡排序冒泡排序的思想冒泡排序是一种简单直观的排序算法,可以对一组无序的数据进行指定规则的排序。如果需要将一组数据进行从小到大的排序,可以对数组进行冒泡排序,每进行一趟排序,每两个相邻的数据就会进行大小比较,如果前面一个数大于后面一个数,那么便会交换这两个数据之间的位置,保证较大的数值一定在后面,那么每一趟排序,就能确定这趟排序的一个最大数值。n个数据元素的反序集合,需要对其进行n-1趟排序,每第i趟排序所进行的比较次数是n-i次,n个数据元素的正序集原创 2020-08-26 22:24:21 · 746 阅读 · 0 评论 -
链表
链表链表的介绍项目项目链表的介绍链表是一种在物理存储单元上非连续、非顺序的存储结构,链表是由一系列的节点组成的,每个节点都包含要存储的数据和指向下一个节点的地址。链表的特点上一章学习了数组的特点,数组是在物理存储单元上是连续存储的,需要在使用前事先开辟一片连续的内存空间,因此,它在访问和修改操作时,都可以通过直接访问其地址来获取数据,效率很高,但是数组是不可以修改容量的,即使是动态数组(ArrayList)可以动态的修改其容量和进行插入和删除操作,但是由于进行这些操作都原创 2020-08-26 16:30:22 · 125 阅读 · 0 评论 -
数组和ArrayList
数组和ArrayList数组数组的介绍数组是有限个相同类型的元素组成的顺序存储的集合,它在内存中的地址是连续的,在使用前需要先声明其容量大小,在C#中可以用Array来声明一个数组。数组的特点由于数组在内存中的地址是连续的,因此在访问时可以直接通过其地址进行访问,当要访问该数组中索引为Index的数组值时,可以直接通过访问数组首地址+Index*元素数据长度的地址获取到该值,因此数组在进行访问和写入操作的时候是非常快的,其时间复杂度是O(1)。因此,在确定其元素数量,或者需要进行原创 2020-08-25 23:54:56 · 600 阅读 · 0 评论 -
集合
集合集合的定义集合 (Collection)群集是一种结构化的数据类型。它存储数据,并且提供数据的添加、删除、更新操作,以及对群集的不同属性值的设置与返回操作集合描述集合有分为线性集合和非线性集合,线性集合就像一根线一样,元素之间守卫相连,一个节点后不会有多个直接前趋或者直接后继,比如数组,List,Queue,Stack都是线性集合,而非线性集合,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继,比如二维数组,二叉树等。线性的群集可能是直接存取集合,也可能是顺序存取集合,直接存取集合在原创 2020-08-25 22:22:19 · 219 阅读 · 0 评论