随笔分类 - C# 数据结构与算法
摘要:线索二叉树(引线二元树) 的定义如下: “一个二叉树通过如下的方法“穿起来”:所有原本为空的右(孩子)指针改为指向该节点在中序序列中的后继,所有原本为空的左(孩子)指针改为指向该节点的中序序列的前驱。 传统的二叉树一般都是以链式存储的结构来表示。这样,二叉树中的每个节点都可以用链表中的一个链节点来存
阅读全文
摘要:概览: 满二叉树 满二叉树。一棵高度为h(从0开始,root=0),且含有2h+1-1个结点的二叉树 特点:①只有最后一层有叶子结点 ②不存在度为1的结点③按层序从0开始编号,结点i的左孩子为2i+1,右孩子为2i+2:结点i的父节点为i=0,是根结点无父结点,i!=0,父结点parent=[(i-
阅读全文
摘要:学习路径 然后去leetcode刷简单的题目。 然后去leetcode刷简单的题目。 复习所有 在刷leetcode难部分 树的定义 树可以用递归的形式来定义:树T是由n(n>=0)个结点组成的有限集合,他或者是颗空树,或者包含一个根结点和零或若干棵互不相干的子树。 可以使用广义表(纯表)的形式树结
阅读全文
摘要:数组 数组是一种数据集合,数据元素按次序存储于一个地址连续的内存空间中。数组是其他数据结构实现顺序存储的基础。 线性表结构可以具有弹性,既可以是简单的数组,也可以扩展为复杂的数据结构 广义表逻辑上数组可以看成二元组<下标,值>,哈希表也是二元组<健,值>C#语言中,数组都是在运行时分配所需要的空间。
阅读全文
摘要:C# 串的概念及类型定义 串是由n(n>=0)个字符a0,a1,a2,…,an-1组成的有限序列,记作:String={a0,a1,a2,…,an-1}其中,n表示串的字符个个数,称为串的长度。若n=0,则称为空串,空串不包含任何字符。1.字符及字符串的编码与比较每个字符根据所使用的字符集及编码方案
阅读全文
摘要:队列 队列又称为“先进先出”(FIFO)线性表限定插入操作只能在队尾进行,而删除操作只能在队首进行,Front对头指针指向第一元素;Rear队尾指针指向下一个入队的元素。队列也可以采用顺序存储结构或链表结构来实现,分别称为顺序队列和链队列空队列:front == rear; 顺序队列 用一组连续的存
阅读全文
摘要:栈的简介 栈是一种线性的逻辑结构,是操作受限的线性表,可依赖数组和链表这两种物理结构实现,是一种FILO的结构。以下是生活中遇到的栈的结构: 栈的形式化定义为 栈(Stack)简记为 S,是一个二元组,顾定义为S = (D, R)其中:D 是数据元素的有限集合;R 是数据元素之间关系的有限集合。 栈
阅读全文
摘要:线性表的实现方式 线性表的实现方式有下面几种 顺序表 :数组 单链表:list<> 单向循环链表 双向链表:linkedlist<> 循环链表: 自定义顺序表 public class SequenceList<T> { private T[] items; private int count; p
阅读全文
摘要:问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 C# 代码 方法 :递归 优点:代码少 缺点:效率低,堆栈会溢出 其实这道
阅读全文
摘要:大纲 算法时间复杂度 C# 中的数据结构 时间复杂度 让算法先运行,事后统计运行时间?存在什么问题?·和机器性能有关,如:超级计算机v.s.单片机和编程语言有关,越高级的语言执行效率越低和编译程序产生的机器指令质量有关·有些算法是不能事后再统计的,如:导弹控制算法算法时间复杂度事前预估算法时间开销T
阅读全文
摘要:原文:https://zhuanlan.zhihu.com/p/78094287 数据结构是我们软件开发中最基础的部分了,它体现着我们编程的内功。大多数人在正儿八经学习数据结构的时候估计是在大学计算机课上,而在实际项目开发中,反而感觉到用得不多。其实也不是真的用得少,只不过我们在使用的时候被很多高级
阅读全文
摘要:原文:https://zhuanlan.zhihu.com/p/50479555 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢?
阅读全文
摘要:多元组 多元组,也称为顺序组(英语:Tuple),泛指有限个元素所组成的序列。在数学及计算机科学分别有其特殊的意义。 数学上,n元组或多元组是对象个数有限的序列。元组由三部分组成:边界符、分隔符和元素。通常采用的边界符是小括号“ ( ) {\displaystyle (\ )} ”,分隔符是逗号。
阅读全文
摘要:上一篇我介绍了Hash函数 这篇我来说一下Hash函数在 HashTable中的应用。 HashTable的特性: 1、装载因子:.net core 0.72 ,java 0.75 2、冲突解决方案:Hashtable使用了闭散列法来解决冲突,java采用 开散列法解决冲突. 3、bucket(桶)
阅读全文
摘要:希函数定义 哈希函数(英語:Hash function)又称散列函数、散列函数、摘要算法、单向散列函数。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个(哈希函数返回的值)称为指纹、哈希值、哈希代码、摘要或散列值(hash values,has
阅读全文
摘要:Hashtable 和 Dictionary <K, V> 类型 1):单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2):Dictionary和HashTable内部实现差不多,但前者无需装箱拆箱操作,效率略高一点。 3):多线程程序中推荐使用Co
阅读全文
摘要:一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条
阅读全文
摘要:这本来就是大一的时候就开始学习的,但是之后一直没再接触。一接触但有概念而没有一个清晰的过程,所以再次缕清了后记录一下博客。本文重点阐明了计算机中减法运算的实现以及反码、补码的意义。对于加法来说,计算机很容易实现,举例:8 + 6 = 14;在计算机中,也就是0000 10000000 0110. 0
阅读全文
摘要:1.什么叫做“自顶向下,逐步求精”?目前软件开发方法使用最广泛的,当属结构化的方法和面向对象的方法。而其中,结构化程序设计支持“自顶向下, 逐步求精”的程序设计方法。“自顶向下”的具体内涵是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。而“逐步求精”
阅读全文