摘要:
定义 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlo
阅读全文
posted @ 2022-06-13 17:31
小林野夫
阅读(170)
推荐(0)
摘要:
定义 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 若将两个有序表合并成一个有序表,称为二路归并。 O ( n log
阅读全文
posted @ 2022-06-13 14:30
小林野夫
阅读(365)
推荐(0)
摘要:
一、枚举算法思想(暴力算法) 将问题的所有可能答案一一列举,根据判断条件判断此答案是否合适,一般用循环实现。 经典运用:百钱买百鸡、填写运算符 二、递推算法思想 1.顺推法:从已知条件出发,逐步推算出要解决问题的方法。 2.逆推法:从已知结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的逆过
阅读全文
posted @ 2022-06-13 01:55
小林野夫
阅读(2303)
推荐(0)
摘要:
原文:https://lotabout.me/2018/skip-list/ 跳表──没听过但很犀利的数据结构 跳表(skip list) 对标的是平衡树(AVL Tree),是一种 插入/删除/搜索 都是 O(log n) 的数据结构。它最大的优势是原理简单、容易实现、方便扩展、效率更高。因此在一
阅读全文
posted @ 2022-06-13 00:56
小林野夫
阅读(698)
推荐(1)
摘要:
概览 定义 堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。 完全二叉树的知识 数组索引是从0开始 通常堆是通过一维数组来实现的。在阵列起始位置为0的情形中:父节点i的
阅读全文
posted @ 2022-06-12 15:24
小林野夫
阅读(585)
推荐(1)
摘要:
概览 定义 选择排序:每一趟在待排序元素中选取关键字最小(或最大)的元素, 和首个待排序元素的做交换。 适用范围 适用性:既可以用于顺序表,也可用开链表 时间和空间复杂度 时间复杂度:O(N) 空间复杂度:O(1) 稳定性 简单选择排序是不稳定的 算法执行步骤 第一趟:从左往右扫描找出最小元素,和第
阅读全文
posted @ 2022-06-12 01:31
小林野夫
阅读(77)
推荐(0)
摘要:
概览 定义 快速排序(英语:Quicksort),又称分区交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R.Hoare在1960年提出。它的基
阅读全文
posted @ 2022-06-11 23:09
小林野夫
阅读(831)
推荐(0)
摘要:
概览 定义 冒泡排序(英语:Bubble Sort)又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”
阅读全文
posted @ 2022-06-11 19:30
小林野夫
阅读(467)
推荐(0)
摘要:
概览 算法的思想 穷举(枚举)算法思想; 递推算法思想; 递归算法思想: 分治算法思想: 概率算法思想; 算法分类 按辅助空间分类 比较式排序法 比较排序法不需要太多的辅助空间 之前学习的冒泡、选择、插入、归并、快速、希尔、堆排序,都是基于比较的排序口平均时间复杂度目前最低是o(nlogn) 分配式
阅读全文
posted @ 2022-06-11 18:16
小林野夫
阅读(41)
推荐(0)
摘要:
背景 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。 希尔排序是非稳定排序算法。 该方法因D.L.Shell 于1959 年提出而得名。 定义 希尔排序︰先将待排序表分割成若
阅读全文
posted @ 2022-06-11 18:15
小林野夫
阅读(204)
推荐(0)
摘要:
概览 插入排序法(打牌) 算法思想:每次将一个待排序的元素按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成。 例如:元素13要排序时候,可以认为13之前元素都已经排序完成,此时只要把13与之前元素一 一比较,然后找到合理位置插入。 代码 空间复杂度:(O(1)时间复杂度︰ O(n)~
阅读全文
posted @ 2022-06-11 11:44
小林野夫
阅读(393)
推荐(0)
摘要:
概览 分块查找 分块查找要求把一个数据分为若干块,每一块里面的元素可以是无序的,但是块与块之间的元素需要是有序的。对于一个非递减的数列来说,第i块中的每个元素一定比第i-1块中的任意元素大。同时,分块查找需要一个索引表,用来限定每一块的范围。在增加、删除、查找元素时都需要用到。 使用场景 字典 班级
阅读全文
posted @ 2022-06-10 00:39
小林野夫
阅读(371)
推荐(0)
摘要:
概览 概念 折半查找,又称“二分查找”,仅适用于有序的顺序表。可以用跳表来实现有序的链表的二分查找的功能 查找效率 圆形:节点 矩形:null 判定树 二分查找的判定树是平衡二叉树 二分查找过程可用二叉树来描述:把当前查找区间的中间位置上的结点作为根,左子表和右子表中的结点分别作为根的左子树和右子树
阅读全文
posted @ 2022-06-09 20:35
小林野夫
阅读(307)
推荐(0)
摘要:
概览 查找算法相关的概念 查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 查找算法分类: 1)静态查找和动态查找; 注:静态或者动态都是针对查找表而言的。动态表指查找表中有删除和插入操作的表。 2)无序查找和有序查找。 无序查找:被查找数列有序无序均可; 有序
阅读全文
posted @ 2022-06-09 18:29
小林野夫
阅读(123)
推荐(0)
摘要:
概览 顺序查找 顺序查找的定义为:在一个已知无序(或有序)的队列中找出与给定的关键字相同的数的具体位置。 其原理是让关键字与队列中的数从开始一个一个地往后逐个比较,直到找到与给定的关键字相同的数。 当然,顺序查找绝不仅限于对数字、字符的查找,也适用于前缀、对象信息的关键信息的匹配等。 顺序查找算法的
阅读全文
posted @ 2022-06-09 18:16
小林野夫
阅读(164)
推荐(0)
摘要:
概览 概念 最小生成树是一副连通加权无向图中一棵权值最小的生成树。 在一给定的无向图 G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即 ( u , v ) ∈ E {\displaystyle (u,v)\in E} ),而 w(u, v) 代表此边的权重,若存在 T
阅读全文
posted @ 2022-06-09 16:20
小林野夫
阅读(118)
推荐(0)
posted @ 2022-06-09 16:20
小林野夫
阅读(54)
推荐(0)
posted @ 2022-06-09 16:20
小林野夫
阅读(68)
推荐(0)
摘要:
概览 图(Graph)涉及到的概念 连通图 无向图中,如果任意两个顶点之间都能够连通,则称此无向图为连通图。例如,图 2 中的无向图就是一个连通图,因为此图中任意两顶点之间都是连通的。 连通分量 若无向图不是连通图,但图中存储某个子图符合连通图的性质,则称该子图为连通分量。如图 3 所示,虽然图 3
阅读全文
posted @ 2022-06-06 16:36
小林野夫
阅读(989)
推荐(0)
摘要:
视频地址6.5图的基本操作 - YouTube 基本操作概览 由于考研不考XX,所以重点介绍邻接表和邻接表 此外,还有图的遍历算法,包括深度优先遍历和广度优先遍历。 Adjacent(G,x,y):判断图G是否存在边<x, y>或(x, y)。 Neighbors(G,x):列出图G中与结点x邻接的
阅读全文
posted @ 2022-06-05 17:42
小林野夫
阅读(101)
推荐(0)
摘要:
视频地址6.4十字链表、邻接多重表 - YouTube 概览 十字链表用于有向图 结构设计 顶点和边节点的设计如下: 空间复杂度 o(IVI+IEI) 如何找到指定顶点的所有出边?――顺着绿色线路找 如何找到指定顶点的所有入边?―一顺着橙色线路找 邻接多重表存储无向图 优点:方便删除边,删除一次就可
阅读全文
posted @ 2022-06-05 17:02
小林野夫
阅读(248)
推荐(0)
摘要:
使用图结构表示的数据元素之间虽然具有“多对多”的关系,但是同样可以采用顺序存储,也就是使用数组有效地存储图。 使用数组存储图时,需要使用两个数组,一个数组存放图中顶点本身的数据(一维数组),另外一个数组用于存储各顶点之间的关系(二维数组)。 存储图中各顶点本身数据,使用一维数组就足够了;存储顶点之间
阅读全文
posted @ 2022-06-05 16:40
小林野夫
阅读(151)
推荐(0)
摘要:
视频地址6.3邻接表法 - YouTube 概览 图的邻接表存储法详解 图的顺序存储结构 图的十字链表存储法 通常,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表、邻接多重表和十字链表。 本节先讲解图的邻接表存储法。邻接表既适用于存储无向图,也适用于存储有向图。 在具体讲解邻接表存储
阅读全文
posted @ 2022-06-05 15:29
小林野夫
阅读(655)
推荐(0)
摘要:
多路查找树的背景 数组、堆、栈,链表、队列、二叉树,它们适用于较小的文件,是应用在内存中的数据结构。而对于较大的、存放在外存储器上的文件就不合适了,对于此类大规模的文件,即使是采用了平衡二叉树,在查找效率上仍然较低。 如果要操作的数据集非常大,大到内存已经没办法处理了,这种情况下,对数据的处理需要不
阅读全文
posted @ 2022-06-04 12:53
小林野夫
阅读(145)
推荐(0)
摘要:
阅读本章需要知识储备 二叉查找树 多路查找树 B树 B+树的背景 由于B树非终端节点存储了除了关键字,还存储了数据库的指针,所以导致b树的效率高。所以为了改进效率,就讲让非终端节点只存储关键字,于是就有了B+树。 B+树 视频地址7.7B+树 - YouTube B+ 树是一种树数据结构,通常用于数
阅读全文
posted @ 2022-06-04 12:12
小林野夫
阅读(280)
推荐(0)
摘要:
概览 一、引言 散列表(Hash Table),哈希表是一种组合的数据结构,特点是:数据元素的关键字与其存储地址直接相关,它通常的实现方式是数组加链表,或者数组加红黑树。哈希表是一种牺牲空间去换取时间的数据结构,需要在空间与时间上有取舍,哈希表是时间和空间之间的平衡。哈希表的核心是哈希函数,哈希表最
阅读全文
posted @ 2022-06-04 10:56
小林野夫
阅读(1996)
推荐(0)
摘要:
视频地址:7.5B树 - YouTube 阅读本章需要知识储备 二叉查找树 多路查找树 B树诞生背景 由于多差查找树会导致不平衡,让查找效率不搞,因此就设置一套平衡机制来提高多叉树的查找效率,这就有了B树。B树是二叉搜索树的扩展。用空间复杂度换取时间复杂度。二叉搜索树是在内存中内存空间有限,而cpu
阅读全文
posted @ 2022-06-03 23:48
小林野夫
阅读(268)
推荐(0)
摘要:
视频地址:2022考研计算机王道数据结构考点冲刺00 红黑树的定义和性质【新考点】 - YouTube 需要的知识储备 1、2-3-4树中翻转的概念 2、平衡二叉树中旋转的概念,请点击阅读平衡二叉树 3、二叉搜索树的概念,请点击阅读二叉搜索树 辅助理解的工具网站:Red/Black Tree 红黑树
阅读全文
posted @ 2022-06-03 19:32
小林野夫
阅读(406)
推荐(0)
摘要:
从技术角度看,Border是一个装饰元素(decorator),装饰元素是特定类型的元素,通常用于在一个对象周围添加某些种类的图形装饰。所有装饰元素都继承自System.Windows.Controls.Decorator类。大多数装饰元素设计用于特定控件。例如,Button控件使用ButtonCh
阅读全文
posted @ 2022-05-30 00:35
小林野夫
阅读(9580)
推荐(0)
摘要:
一. 总体介绍 WPF的布局控件都在System.Windows.Controls.Panel这个基类下面,使用 WPF提供的各种控件在WPF应用程序中界面进行布局,同时对各种子控件(如按钮、文本框,下拉框等)进行排列组合。 Pane类的公共属性太多了。就简单介绍几个常见的属性如下表。 名称 说明
阅读全文
posted @ 2022-05-29 20:08
小林野夫
阅读(908)
推荐(0)
摘要:
如果我们只需要在画布中摆放少量的图形元素,那么直接使用Line、Rectangle这些对象是没有问题的。但当我们的图形元素数量巨大(比如说10万个),或是刷新频繁(比如说50毫秒刷新一次)时,WPF就会消耗大量的资源和出现卡顿的现象。为了解决这个问题,我们使用WriteableBitmap,用它作为
阅读全文
posted @ 2022-05-29 20:01
小林野夫
阅读(2080)
推荐(2)
摘要:
Canvas 画布 总结 1、canvas 中的元素通过canvas的附件属性left|right、bottom|top 来布局, 不能同时使用left 和right或者top和bottom 2、zindex控制层级。 3、 Canvas画布为容器控件,用于定位,它不会自动调整内部元素的排列(Arr
阅读全文
posted @ 2022-05-29 19:49
小林野夫
阅读(1142)
推荐(0)
摘要:
前言 在WPF/Silverlight当中,如果已经存在的Element无法满足你特殊的需求,你可能想自定义Element,那么就有可能会面临重写MeasureOverride和ArrangeOverride两个方法,而这两个方法是WPF/SL的Layout系统提供给用户的自定义接口,因此,理解La
阅读全文
posted @ 2022-05-29 17:34
小林野夫
阅读(894)
推荐(1)
摘要:
阅读本章之前需要的知识 属性的本质 工厂设计模式 https://docs.microsoft.com/zh-cn/dotnet/desktop/wpf/properties/dependency-properties-overview?view=netdesktop-6.0 依赖属性Depende
阅读全文
posted @ 2022-05-28 09:46
小林野夫
阅读(3452)
推荐(0)
摘要:
哈夫曼树 定义 在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树 构造哈夫曼树 给定n个权值分别为w1, w2..., wn的结点,构造哈夫曼树的算法描述如下:1)将这n个结点分别作为n棵仅含一个结点的二叉树,构成森林F。2)构造一个新结点,从F中选
阅读全文
posted @ 2022-05-23 14:42
小林野夫
阅读(280)
推荐(0)
摘要:
平衡二叉树 AVL树可视化工具 AVL树可视化工具(旧金山大学 (usfca)|数据结构可视化工具) 自定义泛型平衡二叉树源码:https://files.cnblogs.com/files/blogs/700042/avlTreeT.rar?t=1654089460 一、平衡二叉树定义 平衡二叉树
阅读全文
posted @ 2022-05-23 10:57
小林野夫
阅读(335)
推荐(0)
摘要:
定义 二叉查找树(BST:Binary Search Tree),也称为二叉查找树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
阅读全文
posted @ 2022-05-22 16:43
小林野夫
阅读(262)
推荐(0)
摘要:
树的先序遍历(深度优先) 1)和二叉树的先序遍历一样。 2)转化成二叉树,然后执行二叉树先序遍历 树的后序遍历(深度优先) 2)后根遍历。若树非空,先依次对每棵子树进行后根遍历,最后再访问根结点。 树的层次遍历(广度优先) 和二叉树一样 森林的先序遍历 (深度优先) 1)等同于一次对每颗子树进行先序
阅读全文
posted @ 2022-05-22 15:43
小林野夫
阅读(252)
推荐(0)
摘要:
森林转二叉树的本质是树只有一共前驱
阅读全文
posted @ 2022-05-21 21:06
小林野夫
阅读(39)
推荐(0)
摘要:
线索二叉树(引线二元树) 的定义如下: “一个二叉树通过如下的方法“穿起来”:所有原本为空的右(孩子)指针改为指向该节点在中序序列中的后继,所有原本为空的左(孩子)指针改为指向该节点的中序序列的前驱。 传统的二叉树一般都是以链式存储的结构来表示。这样,二叉树中的每个节点都可以用链表中的一个链节点来存
阅读全文
posted @ 2022-05-21 07:47
小林野夫
阅读(158)
推荐(0)