随笔分类 -  Data Structures and Algorithms

摘要:1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语 。根据密钥的使用方法,可以将密码分为对称密码和公钥密码 :对称密码:加密和解密使用同一种密钥的方式 公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非 阅读全文
posted @ 2021-02-22 11:30 小辣椒樱桃
摘要:1.通用数据结构 可以简单的按照速度将通用数据结构划分为:数组和链表(最慢),树(较快),哈希表(最快)。增、删、改、查是四大常见操作,不过其实可以浓缩为两个操作:增和查。删除操作和和修改操作都是建立在查找操作上的,所以完美的数据结构应该是具有较高的插入效率和查找效率。 1.1.通用数据结构关系 可 阅读全文
posted @ 2020-10-08 17:03 小辣椒樱桃
摘要:1.二叉查找树的创建 1.1二叉树的结点类 根据对图的观察,我们发现二叉树其实就是由一个一个的结点及其之间的关系组成的,按照面向对象的思想,我们设计一个结点类来描述结点这个事物。结点类API设计: 类名 Node<Key,Value> 构造方法 Node(Key key, Value value, 阅读全文
posted @ 2020-10-08 16:02 小辣椒樱桃
摘要:1.简介 线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。 前驱元素:若A元素在B元素的前面,则称A为B的前驱元素后继元素:若B元素在A元素的后面,则称B为A的后继元素线性表的特征:数据元素之间具有一种“一对一”的逻辑关系。1. 第一个数据元素没有 阅读全文
posted @ 2020-10-01 10:59 小辣椒樱桃
摘要:1.简单排序 1.1.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 1.1.1.需求 排序前:{4,5,6,3,2,1} 排序后:{1,2,3,4,5,6} 1.1.2.排序原理 1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。2 阅读全文
posted @ 2020-09-21 07:57 小辣椒樱桃
摘要:https://www.jianshu.com/p/95d224c4d13e 阅读全文
posted @ 2020-05-22 16:40 小辣椒樱桃
摘要:1.线性表索引中的倒排索引,用在ElasticSearch中,产品就是搜索引擎,例如百度搜索、淘宝的商品搜索。 2.顺序表查找。String.contains()方法中用到顺序表查找。 //用于判断源字符串是否包含目标字符序列 CharSequence s public boolean contai 阅读全文
posted @ 2020-05-21 23:37 小辣椒樱桃
摘要:1.概念 查找: 查找方式: 2.顺序表查找 2.1.概念 顺序查找(被查找的序列可以无序) 线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。 由于顺序查找是从 阅读全文
posted @ 2020-05-21 18:01 小辣椒樱桃
摘要:一、排序的具体应用 1、淘宝商品价格排序:商品按价格高低排序后显示;租房时看价格,从低到高;2、微博热搜排行榜:排序后,最高的十个关键字,上热搜3、QQ好友列表:按照好友名字的排序(涉及字符排序)4、超星移动图书馆热书榜:排序后,最高的十本书为热书 https://blog.csdn.net/din 阅读全文
posted @ 2020-05-19 19:13 小辣椒樱桃
摘要:本篇博客将介绍几种高级的排序算法:希尔排序和快速排序。 1、希尔排序 希尔排序是基于直接插入排序的,它在直接插入排序中增加了一个新特性,大大的提高了插入排序的执行效率。所以在讲解希尔排序之前,我们先回顾一下直接插入排序。 ①、直接插入排序 直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已 阅读全文
posted @ 2020-05-19 18:01 小辣椒樱桃
摘要:1.排序方法与比较 比较: 2、冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。 冒泡算法的运作规律如下: ①、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 ②、对每一对相邻元素作 阅读全文
posted @ 2020-05-19 17:23 小辣椒樱桃
摘要:Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组、链表、树等数据结构不同,在这些数据结构中查找某个关键字,通常要遍历整个数据结构,也就是O(N)的时间级, 阅读全文
posted @ 2020-05-03 20:58 小辣椒樱桃
摘要:一、算法定义 二、算法的时间复杂度与空间复杂度 一、算法定义 1.定义:算法是解决待定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 2. 算法的特性 算法有五个基本特性:输入、输出、有穷性、确定性和可行性。 输入输出 输入和输出特性比较容易理解,算法具有零个或 阅读全文
posted @ 2020-05-03 16:53 小辣椒樱桃
摘要:一、 图的定义 二、图的遍历 一、 图的定义 1.图是由顶点的有穷非空集和顶点之间边的集合,通常表示为:G(V. E),其中,G 表示一个图,V 是图 G 中顶点的集合,E 是图 G 中边的集合。 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。 在树 阅读全文
posted @ 2020-05-03 16:41 小辣椒樱桃
摘要:一、树 1.定义 2.比较 二、二叉树 1.概念 2.满二叉树 3.完全二叉树 4.二叉树性质 5.遍历二叉树 5.1.原理 5.1.前序遍历 5.2.中序遍历 5.3.后序遍历 5.4.层序遍历 阅读全文
posted @ 2020-05-02 17:00 小辣椒樱桃
摘要:一、串 二、串的存储结构 一、串 1.概念 由零个或多个字符组成的有限序列。 2.字符串的比较 二、串的存储结构 1.顺序存储结构 2.链式存储结构 阅读全文
posted @ 2020-05-02 11:48 小辣椒樱桃
摘要:一、栈 二、队列 一、栈 1.概念 2. 3.栈的顺序存储结构——进栈操作 4.栈的顺序存储结构——出栈操作 5.栈的链式存储结构——进栈操作 6.栈的链式存储结构——出栈操作 二、队列 1.概念 2.循环队列 3.队列的链式存储结构——入队操作 4.队列的链式存储结构——出队操作 阅读全文
posted @ 2020-05-01 18:44 小辣椒樱桃
摘要:一、线性表 二、顺序存储结构 三、链式存储结构 1.单链表 2.静态链表 3.循环链表 4.双向链表 一、线性表 1.线性表(List):零个或多个数据元素的有限序列。2.分类 3.线性表的抽象数据类型 对于一个线性表来说,插入或者删除数据都是必须的操作,因此线性表的抽象数据类型定义如下: ADT线 阅读全文
posted @ 2020-04-30 22:46 小辣椒樱桃
摘要:一、数据结构的一些相关概念 程序 = 数据结构 + 算法 数据结构:是相互之间存在的一种或多种特定关系的数据元素的集合。 为编写出一个“好”的程序,必须分析待处理对象的特性及各处理对象之间存在的关系。这也就是研究数据结构的意义所在。 二、逻辑结构与物理结构 数据结构的定义:数据结构是相互之间存在一种 阅读全文
posted @ 2020-04-29 09:06 小辣椒樱桃