自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

花城的博客

是本人存放笔记的地方啦

  • 博客(19)
  • 收藏
  • 关注

原创 数据结构与算法——19. 散列函数设计方法

文章目录一、散列(哈希)函数设计方法1. 折叠法2. 平方取中法二、散列函数设计:非数项总结一、散列(哈希)函数设计方法1. 折叠法折叠法设计散列函数的基本步骤:将数据项按照位数分为若干段;将几段数字相加;对散列表大小求余,得到散列值。例如:对于电话号码62767255,可以两位两位分为4段(62、76、72、55),相加(62+76+72+55=265),散列表包括11个槽,那么就是265%11=1。所以,h(62767255)=1h(62767255)=1h(62767255)=1。

2021-11-30 22:03:01 2420

原创 数据结构与算法——18. 散列的应用:区块链技术

文章目录散列的应用:区块链技术1. 区块2. 区块链的不可修改性3. 工作量证明4. 上限值5. 记账奖励散列的应用:区块链技术区块链是一种分布式数据库,通过网络连接各节点,每个节点都保存着整个数据库所有数据,任何地点存入的数据都会完成同步。区块链最本质特征是“去中心化”!不存在任何控制中心、协调中心节点,所有节点都是平等的,无法被控制。1. 区块区块链由一个个区块(block)组成,区块分为头(head)和体(body):区块头记录了一些元数据和链接到前一个区块的信息,元数据包括生成时间、前

2021-11-29 18:55:16 787

原创 数据结构与算法——17. 散列(哈希)与完美散列函数

文章目录一、散列(Hashing)的概念举例说明二、完美散列函数1. 数据的一致性校验2. 完美散列函数用于数据的一致性校验一、散列(Hashing)的概念在查找算法中,如果数据项之间是按照大小排好序的话,就可以利用二分查找来降低算法复杂度。现在我们沿着这个思路,在存放数据时花点心思:构造一个新的数据结构,能使得查找算法的复杂度降到O(1)O(1)O(1)。如果我们事先能知道要找的数据项应该出现在数据集中的什么位置,就可以直接到那个位置看看数据项是否存在即可。于是,现在的问题就成了:如何由数据项的值来

2021-11-29 11:41:28 926

原创 数据结构与算法——16. 快速排序

文章目录快速排序(Quick Sort)python代码实现算法分析排序算法可视化演示:传送门,这些演示可以帮助我们跟好的理解这些排序算法。下面的算法的实现,均以从小到大排序作为目的。快速排序(Quick Sort)快速排序的思路是依据一个“中值”数据项来把数据表分为两半:小于中值的一半和大于中值的一半,然后每部分分别进行快速排序(递归)。如果希望这两半拥有相等数量的数据项,则应该去找数据表的“中位数”充当“中值”。但找中位数需要计算开销,要想没有开销,只能随意找一个数来充当“中值”。比如,

2021-11-28 14:23:06 371

原创 数据结构与算法——15. 归并排序

文章目录归并排序(Merge Sort)python代码实现算法分析归并排序(Merge Sort)排序算法可视化演示:传送门,这些演示可以帮助我们跟好的理解这些排序算法。下面的算法的实现,均以从小到大排序作为目的。归并排序是递归算法,思路是将数据表持续分裂为两半,直到每一组剩下一个数据项为止。然后对每两组数据项分别进行排序,合并成一组,如此反复排序、合并……最终合并成一个表,完成排序。归并算法的递归三定律为:基本结束条件:数据表仅有1个数据项,自然是排好序的;缩小规模:将数据表分裂为相

2021-11-27 15:16:52 474

原创 数据结构与算法——14. 希尔排序

文章目录希尔排序(Shell Sort)python代码实现算法分析希尔排序(Shell Sort)我们注意到:在插入排序中,列表越接近有序,比对次数就越少。从这个情况入手,希尔排序以插入排序作为基础,对无序表进行**“等间隔”划分子列表**,每个子列表都执行插入排序。比如,间隔为3进行分组,如下图,每行深色的为一组:间隔为多少,那么子列表就有多少个。随着间隔的缩小,子列表的数量越来越少,无序表的整体越来越接近有序,从而减少整体排序的比对次数。对3个子列表分别进行插入排序后,整个表的状态(最下面

2021-11-26 16:52:40 1117

原创 数据结构与算法——13. 插入排序

文章目录插入排序(Insertion Sort)插入数据项的思路python代码实现算法分析排序算法可视化演示:传送门,这些演示可以帮助我们跟好的理解这些排序算法。下面的算法的实现,均以从小到大排序作为目的。插入排序(Insertion Sort)插入排序维护一个已排好序的子列表,这个子列表位置始终在列表的前部,然后逐步扩大这个子列表直到全表:第1趟,子列表仅包含第1个数据项,将第2个数据项作为“新项”插入到子列表的合适位置中,这样已排序的子列表就包含了2个数据项。第2趟,再继续将第3个

2021-11-25 17:33:28 927

原创 数据结构与算法——12. 冒泡排序和选择排序

文章目录一、冒泡排序(Bubble Sort)python代码实现算法分析改进冒泡排序算法二、选择排序(Selection Sort)python代码实现算法分析排序算法可视化演示:传送门,这些演示可以帮助我们跟好的理解这些排序算法。下面的算法的实现,均以从小到大排序作为目的。一、冒泡排序(Bubble Sort)冒泡排序的算法思路在于对无序表进行多趟比较交换。每趟包括了多次两两相邻比较,并将逆序的(小项在大项后面的)数据项互换位置,最终能将本趟的最大项就位。经过n-1趟比较交换,实现整表排

2021-11-25 15:32:00 1418

原创 数据结构与算法——11. 二分查找

文章目录二分查找1. python代码实现2. 递归算法实现3. 算法分析4. 二分查找的进一步思考二分查找对于有序表,我们有一种比顺序查找更加优秀的查找算法。那就是二分查找算法。假设有一个从小到大排序的列表。我们从列表中间的项进行对比,如果匹配查找项,则查找结束;如果不匹配,那么就有两种情况:列表中间项比查找项大,那么查找项只可能出现在前半部分;123579112536目标中间项列表中间项比查找项小,那么查找项只可能出现在后半部分。

2021-11-24 19:25:42 575

原创 数据结构与算法——10. 顺序查找

文章目录顺序查找1. 无序表的顺序查找python代码实现算法分析2. 有序表的顺序查找python代码实现算法分析顺序查找如果数据项保存在如列表这样的集合中,我们会称这些数据项具有线性或者顺序关系。在Python List中,这些数据项的存储位置称为下标(index),这些下标都是有序的整数,从零开始,到n-1结束(n为数据项的数量)。通过下标,我们就可以按照顺序来访问和查找数据项,这种技术称为“顺序查找”。1. 无序表的顺序查找对于无序表的查找,首先从列表的第1个数据项开始,按照下标增长的顺

2021-11-24 15:55:24 1865 1

原创 数据结构与算法——9. 找零问题的递归解法和动态规划解法

文章目录一、分治策略与递归算法1. 分治策略的概念2. 分治策略与递归算法的关系二、优化问题和贪心策略1. 优化问题2. 贪心策略3. 贪心策略失效三、找零问题的递归解法改进递归算法解决方案四、找零问题的动态规划解法1. 动态规划解法2. 动态规划中最主要的思想3. 找零兑换:动态规划算法扩展一、分治策略与递归算法1. 分治策略的概念分治策略是解决问题的典型策略:分而治之。将问题分为若干更小规模的部分通过解决每一个小规模部分问题,并将结果汇总得到原问题的解。2. 分治策略与递归算法的关系递归算

2021-11-23 20:07:07 5019

原创 数据结构与算法——8. 递归的应用:汉诺塔

文章目录一、递归的应用:汉诺塔1. 什么是汉诺塔2. 神的旨意是千真万确的!3. 使用递归思想解决汉诺塔问题4. python代码实现一、递归的应用:汉诺塔1. 什么是汉诺塔汉诺塔问题是法国数学家Edouard Lucas于1883年,根据传说提出来的:传说在一个印度教寺庙里,有3根柱子,其中一根套着64个由小到大的黄金盘片,僧侣们的任务就是要把这一叠黄金盘从一根柱子搬到另一根,但有两个规则:一次只能搬1个盘子大盘子不能叠在小盘子上神的旨意说一旦这些盘子完成迁移寺庙将会坍塌,世界将会毁

2021-11-20 17:16:01 3321

原创 数据结构与算法——7. 递归:递归的概念与实现

文章目录一、递归( Recursion)的概念1. 递归的简单应用:数列求和问题使用循环算法解决使用递归算法解决2. 递归程序的执行过程3. 递归三定律二、递归调用的实现1. 递归与栈的关系2. Python对递归深度(递归调用次数)的限制一、递归( Recursion)的概念递归是一种解决问题的方法,其精髓在于将问题分解为规模更小的相同问题,持续分解,直到问题规模小到可以用非常简单直接的方式来解决。递归算法最显著的特征就是:在算法流程中调用自身。1. 递归的简单应用:数列求和问题给定一个列表,

2021-11-18 17:26:57 1842

原创 数据结构与算法——6. 抽象数据类型:无序表与有序表及其链表实现

文章目录一、无序表抽象数据类型列表(List)的概念二、采用链表实现无序表1. 链表2. 链表节点3. python实现链表节点4. python实现链表一、无序表抽象数据类型列表(List)的概念列表是一种数据项按照相对位置存放的数据集,有时也称为“无序表unordered list”,其中数据项只按照存放位置来索引,如第1个、第2个……、最后一个等。如一个考试分数的集合“54, 26, 93, 17, 77和31”,如果用无序表来表示,就是[54, 26, 93, 17, 77, 31]。二、

2021-11-17 16:22:22 1350

原创 数据结构与算法——5. 线性结构之队列(Queue)与双端队列(Deque)

文章目录一、队列(Queue)1. 队列的定义2. 队列的特性3. 使用python实现队列二、队列的应用:打印任务1. 实例2. 抽象建模3. python代码实现三、双端队列(Deque)1. 双端队列的定义2 .使用Python实现双端队列四、双端队列的应用:“回文词”判定1. “回文词”的概念2. “ 回文词”的判定方法3. python代码实现一、队列(Queue)1. 队列的定义队列是一种有次序的数据集合,其特征是新数据项的添加总发生在一端(通常称为“尾rear”端)而现存数据项的移除总

2021-11-16 17:30:03 1477

原创 数据结构与算法——4. 线性结构之栈(Stack)

文章目录一、栈(Stack)1. 栈的定义2. 栈的特性:反转次序3. 使用python实现栈二、栈的应用:括号的嵌套匹配1. 括号的使用规则2. 识别括号的嵌套是否正确一、栈(Stack)1. 栈的定义栈是一种有次序的数据项集合,在栈中,数据项的添加和移除都仅发生在同一端,这一端叫“栈顶stack top”。而另一端叫“栈底stack base”。在读取数据时,最后加入的数据项放在栈顶,会被第一个取出。而最先加入的数据项放在栈低,只能在所有数据项被取完后,最后一个取出。这种次序被称为“先进后出LI

2021-11-15 17:28:55 1024

原创 数据结构与算法——3. 线性结构的概念

文章目录一、线性结构(Linear Structure)1. 线性结构的定义2. 常见的线性结构一、线性结构(Linear Structure)1. 线性结构的定义线性结构是一种有序数据项的集合,其中的每个数据都有唯一的前驱和后继,除了第一个没有前驱,最后一个没有后继;新的数据项加入到数据集中时,只会加入到原有某个数据项之前或之后。2. 常见的线性结构线性结构有多种,根据数据项增减方式的不同,诞生了多种线性结构。有的只允许从一端添加,有的则允许从两端移除。其中,常见的有四种:栈(Stack)

2021-11-13 16:40:44 787

原创 数据结构与算法——2. 数据结构与算法的概念以及复杂度的渐进表示法

文章目录一、抽象数据类型与数据结构1. 对问题进行抽象2. 抽象数据类型(ADT)3. 什么是数据结构(Data Structure)二、算法和计算复杂性1. 什么是算法(Algorithm)2. 计算复杂性3. 算法和计算复杂性三、复杂度的表示方法1. 复杂度的类别2. 复杂度的渐进表示法四、算法分析窍门一、抽象数据类型与数据结构计算机科学不仅仅是对计算机的研究,更重要的是研究问题、问题解决过程、问题的解决方案。编程是通过一种程序设计语言,将抽象的算法实现为计算机可以执行的代码的过程,而最终的产

2021-11-10 21:22:56 985

原创 数据结构与算法——1. 问题求解的计算之道和图灵机计算模型

文章目录一、问题求解的计算之道1. 基于有穷观点的能行方法2. 关于“计算”的几种数学模型二、图灵机计算模型1. 图灵机(Turing Machine)基本概念2. 图灵机的基本定义一、问题求解的计算之道人们在生活、生产、学习、创造的过程中总会遇到各种各样的问题。为了解决这些问题,人们使用占卜、求神、经验、数学、实验、模型、哲学等各种各样的方法和工具。而其中数学才是解决问题最强有力的工具,尽管数学本身也存在着很多问题(有些问题无法用数学语言明确表述、或者有些可明确表述的问题仍无法解决)。1. 基于有穷

2021-11-09 14:34:32 1198

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除