- 博客(524)
- 资源 (12)
- 收藏
- 关注
原创 Hermes全场景自动化实战——个人文案领域
个人简介和企业简介的撰写需求,在各类自由职业平台上常年排在前列。很多创业者、个体从业者、小微企业主,自己写不好,又不知道找谁,愿意为一份专业的简介花几百元。这类需求的特点是:有固定套路可循,但需要结合客户的实际情况个性化定制,MaxHermes在这一场景里恰好能做到「套路固化+个性化填充」的结合。在开始接单之前,先给MaxHermes建立一套个人简介和企业简介的通用撰写工作流。在对话框中发送以下内容。我以后会接到写个人简介和企业简介的单子。
2026-04-22 06:39:51
225
原创 计算机组成原理——浮点数的表示
浮点数采用科学计数法的思想,将数值表示为尾数和指数两部分,能够在有限的位数内表示更大的数值范围,是计算机中表示实数的主要方式。对于相同的位数,定点数只能表示固定范围内的数值,而浮点数通过调整指数可以表示从极小到极大的数值。但需要注意的是,浮点数的精度是有限的,由尾数位数决定,并非所有实数都能精确表示。符号位表示数的正负,指数部分决定数值的大小范围和小数点的位置,尾数部分决定数值的精度。首先,浮点数的分布是不均匀的,靠近零的地方数值密集,远离零的地方数值稀疏。浮点数的表示形式借鉴了科学计数法的思想。
2025-11-11 16:11:11
1028
原创 计算机组成原理——无符号整数的表示和运算
最后,无符号整数的运算结果总是非负的,如果出现借位,表明结果应该是负数,但无符号整数无法正确表示这种情况。如果需要借位,说明被减数小于减数,减法结果为负数,但无符号整数无法表示负数,此时进位标志CF被置为1,表示发生了借位。由于没有符号位的限制,无符号整数能够充分利用所有二进制位来表示数值,因此在相同字长下,无符号整数的表示范围比带符号整数更大。例如,8位无符号整数的表示范围是0到255,16位无符号整数的表示范围是0到65535,32位无符号整数的表示范围是0到4294967295。
2025-11-11 15:55:28
752
原创 数据结构——最佳归并树
在多路归并排序中,如果各个初始归并段的长度不等,那么采用不同的归并顺序会导致不同的磁盘访问次数。例如,对于3个长度分别为10、20、30个记录的归并段进行二路归并,如果先归并长度为10和20的两个段,再与长度为30的段归并,总的读写次数会少于先归并20和30再与10归并的方案。这是因为较短的归并段被归并的次数更多,应该尽量让它们在归并树的较高层,从而减少其读写次数。如何确定最优的归并顺序,使得总的磁盘访问次数最少,这就是最佳归并树要解决的问题。
2025-10-28 11:04:24
1059
1
原创 数据结构——置换-选择排序(生成初始归并段)
在传统的外部排序方法中,生成初始归并段时采用的是简单的内部排序方法,每次将能装入内存的一批记录读入、排序后写出,形成的初始归并段长度固定且等于内存容量。这种方法虽然简单,但生成的归并段数量较多,导致后续需要更多的归并趟数。能否生成更长的初始归并段,从而减少归并段数量呢?置换-选择排序正是为实现这一目标而设计的算法,它能够生成长度平均为内存容量两倍的初始归并段,显著减少归并段数量。
2025-10-28 10:59:12
1053
原创 数据结构——多路平衡归并与败者树
在多路归并排序中,每次需要从k个归并段中选出关键字最小的记录进行输出。如果采用简单的顺序比较方法,每次选择需要进行k−1次比较,当归并路数较大时,这种方法的效率较低。为了优化多路归并中的选择过程,需要引入更高效的数据结构。败者树正是为解决这个问题而设计的一种特殊的完全二叉树结构,它能够显著减少选择最小记录时的比较次数,从而提高多路归并的整体效率。
2025-10-28 10:50:44
1088
原创 数据结构——外部排序的方法
外部排序的基本问题是如何在内存容量有限的情况下,对存储在外存中的大量数据进行排序。解决这个问题的关键在于将排序过程分解为多个阶段,每个阶段只需要处理能够装入内存的数据量,通过多次外存读写和内存排序的配合,最终完成整个文件的排序。外部排序最常用的方法是多路归并排序,它充分利用了归并排序的思想,将其扩展到外存环境。
2025-10-28 10:43:47
919
原创 数据结构——内部排序算法的选择和应用
要在实际应用中选择最适合的排序算法,需对各种内部排序算法的性能和特性进行全面比较,这些比较涵盖时间复杂度、空间复杂度、稳定性等核心指标,通过清晰的对比能帮助我们把握每种算法的优劣与适用边界。
2025-10-28 10:33:30
1024
原创 数据结构——堆排序
简单选择排序虽然思路清晰,但每次选择最小元素时都需要遍历未排序部分的所有元素,导致大量的比较操作。能否利用某种数据结构来优化选择最值的过程呢?答案是肯定的。堆这种特殊的完全二叉树结构,能够在对数时间内完成插入和删除最值操作,正好可以用来改进选择排序的效率。堆排序正是基于堆这种数据结构设计的一种高效排序算法,它巧妙地利用堆的性质,将选择排序的时间复杂度从On2降低到Onlogn。
2025-10-27 18:04:42
1120
原创 数据结构——简单选择排序
在选择排序中,简单选择排序是最直观的一种,它的思路类似日常生活中从一堆物品里挑出最小的那个放到指定位置,再从剩下的物品里挑出最小的继续放置,直到所有物品都按顺序排好。这种排序方式的核心是“逐趟选最小(或最大),放到对应位置”,每一趟排序都会确定一个元素的最终位置,后续排序无需再处理该元素。综上,简单选择排序通过“逐趟选最小、一次交换”的方式实现排序,逻辑直观,交换次数少,但比较次数固定,时间复杂度为。遍历未排序区间1~7的元素:38、65、97、76、49、27、49,最小元素是27(位置6);
2025-10-27 17:41:35
1181
原创 数据结构——快速排序
在交换排序中,快速排序是效率极高的一种,它基于“分治法”思想,通过选择一个“基准元素”将数组分成两部分,再递归处理这两部分,最终实现整个数组的有序排列。这种排序方式的核心是“一趟划分”——每完成一次划分,基准元素会被放到最终的正确位置,左边的元素都比基准小,右边的元素都比基准大,后续只需递归处理左右子数组即可。综上,快速排序通过分治法和一趟划分,实现了高效的排序,核心是“基准归位+递归处理”。:划分过程中,相同元素可能被交换到基准两侧(如示例中的两个49),相对顺序改变,因此快速排序是。
2025-10-24 18:06:30
679
原创 数据结构——冒泡排序
在交换排序中,冒泡排序是最直观的一种,它通过相邻元素的两两比较和交换,让值较大的元素像水中的气泡一样逐步“上浮”到数组末尾,最终实现整个数组的有序排列。这种排序方式的核心是“逐趟筛选最大元素”,每完成一趟排序,就有一个最大元素被固定在正确的位置,后续排序无需再处理该元素。,但通过“交换标志”的优化,在基本有序数组上能表现出较高效率,且具备稳定、原地排序的优势,是学习交换排序思想的基础。:当相邻元素值相等时(如示例中的两个49),不会发生交换,因此相同元素的相对顺序不会改变,冒泡排序是。,属于“原地排序”。
2025-10-24 17:50:02
992
原创 数据结构——希尔排序
然后逐步缩小增量,重复分组和组内排序的过程,直到增量为1时,进行最后一次全局的直接插入排序。综上,希尔排序通过“分组插入、逐步缩增量”的策略,解决了直接插入排序在无序数组上的低效问题,是插入排序家族中性能更优的算法。通过这种“先宏观调整,再微观整理”的方式,数组会逐渐趋于有序,最终在增量为1时,插入排序的效率会非常高(因为数组已基本有序)。希尔排序通过“分组插入、逐步缩增量”的策略,大幅提升了插入排序的效率,它是插入排序的进阶优化版本。增量缩小为1,此时数组已基本有序,进行一次全局的直接插入排序。
2025-10-24 17:49:23
886
原创 数据结构——折半插入排序
综上,折半插入排序通过折半查找优化了“确定插入位置”的过程,在比较次数上有明显优势,且保持了直接插入排序的稳定性和空间效率,是插入排序家族中更高效的实现方式。直接插入排序在确定插入位置时,需要逐个比较已排序区间的元素,当已排序区间较长时,比较次数较多。的场景,此时折半查找的优势能充分体现,减少大量比较操作。例如,对基本有序的数组进行排序,或数据量中等(如。快速确定插入位置,从而减少比较次数,是对直接插入排序的高效优化。在几百到几千之间)的情况,它的效率比直接插入排序更优。
2025-10-24 17:19:14
822
原创 数据结构——直接插入排序
在日常整理扑克牌时,我们通常会把抓到的新牌插入到已整理好的牌堆里,保持牌堆始终有序——直接插入排序的思想与此完全一致。它将待排序数组分为“已排序区间”和“未排序区间”,每次从“未排序区间”取出第一个元素,插入到“已排序区间”的合适位置,最终让整个数组有序。综上,直接插入排序是一种逻辑直观、实现简单的排序算法,核心是“逐步构建有序区间,每次插入一个元素”。它在小规模或基本有序的数组上表现高效,且具有稳定性,是插入排序家族的基础算法。
2025-10-24 17:10:10
518
原创 数据结构——KMP算法
为了实现指针的智能跳转,KMP算法引入next数组:对于模式串的第jjj个字符(从0开始),nextjnext[j]nextj表示“模式串前jjj个字符组成的子串的最长相等前缀后缀长度”。(1)next数组的定义示例以模式串TT =T“ababc”为例,计算每个位置的nextjnext[j]nextj模式串字符位置jjj0(‘a’)1(‘b’)2(‘a’)3(‘b’)4(‘c’)nextjnext[j]nextj00。
2025-10-24 16:27:23
640
原创 数据结构——BF算法
综上,BF算法的优势是逻辑简单、易于实现,适合模式串较短或匹配概率较低的场景;但在最坏情况下效率较差,这也为后续更高效的KMP算法提供了优化的动力。理解BF算法的“暴力回溯”逻辑,是掌握字符串模式匹配进阶算法的基础。它的核心逻辑是“暴力遍历、逐个比较”,虽然效率不是最优,但因逻辑简单、易于理解,是字符串匹配的基础方法。在字符串模式匹配中,BF算法是最直观的实现方式,也被称为。),我们需要从主串的第0个字符开始,尝试将。后仍未匹配,则返回-1表示失败。完全匹配,则返回起始位置。具体来说,假设主串为。
2025-10-24 16:17:25
1019
原创 散列查找及性能分析的应用
例如,浏览器缓存、服务器缓存(如Redis)中,用用户请求的URL或数据ID作为关键字(key),用缓存的页面内容或数据结果作为值(value)——通过散列函数可直接定位key对应的缓存位置,避免遍历查找,大幅提升响应速度。例如,MySQL的“哈希索引”(非聚簇索引)中,主键作为key,数据在磁盘的存储地址作为value——查询时通过散列函数快速找到主键对应的地址,直接读取数据,比B+树索引的多阶遍历更高效(适用于等值查询场景)。,用线性探测法存储了25(地址5)、35(地址6)、45(地址7),查找。
2025-10-24 15:39:45
688
原创 数据结构 散列表—— 冲突解决方法
冲突解决方法的核心是:当多个关键字通过散列函数映射到同一散列地址时,为后续关键字找到新的空闲存储位置,同时保证后续查找时能准确找到这些关键字。链地址法(又称拉链法)的核心思路是:将散列表的每个地址作为“链表头指针”,同一散列地址的关键字(称为“同义词”)存储在该地址对应的链表中(称为“同义词链表”)。这种方法的优点是计算简单,缺点是容易产生“聚集现象”——多个冲突的关键字会连续占据一段地址(如25、35、45占据5、6、7),后续关键字即使初始地址不冲突,也可能被这段连续地址阻挡,增加冲突概率。
2025-10-24 15:31:24
839
原创 数据结构——散列函数的构造方法
综上,散列函数的构造方法需根据关键字的类型、分布特征和散列表容量选择:直接定址法适合小范围连续关键字,除留余数法适用范围最广,数字分析法依赖关键字分布特征,平方取中法和折叠法适合长关键字或分布不明显的情况。散列函数的设计是散列表高效运行的基础,一个好的散列函数能让关键字映射后的散列地址分布均匀,从而减少冲突的发生。这是最核心的原则,即散列函数应尽可能让关键字均匀分布在散列表的各个地址上,避免大量关键字集中映射到少数几个地址(称为“聚集”)。,若散列表容量为100(地址0~99),取中间两位“12”,则。
2025-10-24 11:29:19
827
原创 数据结构——散列表的基本概念
在之前的查找方法中,无论是顺序查找、折半查找还是树型查找,都需要通过关键字的比较来确定目标位置,查找效率依赖于比较次数。而散列表则通过一种“直接映射”的思路,将关键字与存储位置建立关联,大幅减少比较操作,成为高效查找的重要方式。要理解散列表,首先需要掌握其基本概念。
2025-10-24 10:35:19
509
原创 数据结构——B+树的基本概念
在外存索引中,关键在于提升结点的分支数,从而降低树高并减少访问的页数。B+树可以理解为“阶数为mmm的多路平衡搜索树”,其核心特征体现在三点:其一,内部结点只保存若干有序分割键与子指针;其二,所有真实的关键字与记录引用仅存放在叶结点;其三,叶结点之间用有序链指针串联,天然支持区间扫描。为了便于后文图示的阅读,可把 B+树的高度近似理解为h≈⌈log⌈m2⌉N⌉h≈⌈log⌈m/2⌉N⌉其中NNN为关键字总数,mmm为单页可容纳的最大子指针数。
2025-10-24 10:16:28
644
原创 数据结构——B+树的基本概念
B+树是B树的一种变形,它在B树的基础上进行了重要的改进。一棵mmm阶B+树需要满足以下性质。B+树的结构特征可以从节点类型和组织方式两个方面来理解。首先,B+树中的节点分为两类:内部节点和叶子节点。内部节点只存储索引信息,不存储实际的数据记录,这使得内部节点可以容纳更多的索引项,从而增大了树的阶数,降低了树的高度。叶子节点存储所有的关键字及其对应的数据记录或数据记录的指针,并且叶子节点按关键字大小顺序链接在一起,形成一个有序链表。其次,在关键字数量的约束上,B+树与B树略有不同。对于mmm。
2025-10-24 09:30:13
641
原创 数据结构——B树及其基本操作
B树是一种平衡的多路查找树,它特别适合于外存储器环境下的查找操作。一棵mmm阶B树是一棵平衡的mmm路搜索树,它或者是一棵空树,或者是满足以下性质的树。一棵mmm阶B树需要满足的性质可以归纳为以下几点。首先,树中每个节点至多有mmm棵子树,即至多包含m−1m-1m−1个关键字。其次,除根节点外,每个非叶节点至少有⌈m2⌉⌈m/2⌉棵子树,即至少包含⌈m2⌉−1⌈m/2⌉−1个关键字。对于根节点,如果它不是叶子节点,则至少有两棵子树。
2025-10-23 17:15:28
1230
原创 数据结构——红黑树
红黑树是一种自平衡的二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,颜色只能是红色或黑色。通过对任何一条从根到叶子节点的路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出两倍,从而保证树是近似平衡的。一棵红黑树需要满足以下五条性质。第一,每个节点要么是红色,要么是黑色。第二,根节点必须是黑色。第三,所有叶子节点(NIL节点,空节点)都是黑色。第四,如果一个节点是红色的,则它的两个子节点都必须是黑色的,也就是说,红色节点不能连续出现。
2025-10-23 16:15:35
930
原创 数据结构——平衡二叉树(2)
在实现层面,平衡二叉树的关键在于“自底向上的信息更新与局部旋转”。四类分别对应“在某结点的左子树的左子树插入”、“右子树的右子树插入”、“左子树的右子树插入”、“右子树的左子树插入”。工程实现中,常用的做法是:当发现祖先结点 BF=±2 时,检查“高子树方向的孩子结点”的 BF,若孩子 BF=0、±1,则据此决定是“单旋”还是“先内后外的双旋”。当新结点插入到“左子树的右子树”或“右子树的左子树”时,单次旋转不足以同时恢复有序性与平衡性,需要先对子树做一次“内向旋转”,再对失衡祖先做一次“外向旋转”。
2025-10-23 15:36:56
1132
原创 数据结构——平衡二叉树
平衡二叉树(Balanced Binary Tree),又称AVL树,是一种经过改进的二叉搜索树。它由两位苏联数学家G.M. Adelson-Velsky和E.M. Landis在1962年提出,AVL这个名称也是取自两位发明者名字的首字母。平衡二叉树在满足二叉搜索树所有性质的基础上,增加了平衡性的约束。具体来说,平衡二叉树或者是一棵空树,或者是具有如下性质的二叉搜索树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1。
2025-10-23 15:24:53
974
原创 数据结构——二叉搜索树
若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树上所有节点的值均大于它的根节点的值;它的左、右子树也分别是二叉搜索树。这种特性保证了二叉搜索树的“有序性”——从根节点出发,左子树始终是“小值区域”,右子树始终是“大值区域”,就像一本按规则排列的字典,每个节点都是其左子树的“最大值”和右子树的“最小值”。我们用一个具体的二叉搜索树示例(节点值为整数)来直观理解其结构,用mermaid绘制如下:fill:#333;color:#333;
2025-10-23 15:04:47
927
原创 数据结构——分块查找
分块查找的核心是将查找表拆分为“索引表”和“块表”两部分:索引表存储每块的关键信息(如块内最大关键字、块的起始位置),且索引表必须有序;块表是原始查找表拆分后的结果,需满足“块间有序”的规则——示例中块1的最大关键字25 < 块2的最大关键字58 < 块3的最大关键字92,确保通过索引表能缩小查找范围;,则第一步查找索引表时,因100大于所有块的最大关键字(92),直接判定查找失败,无需进入块内查找——这体现了索引表缩小范围的作用。分块查找分为“查找索引表”和“查找块内数据”两步,以示例中查找目标。
2025-10-23 11:53:38
1169
原创 数据结构——折半查找
折半查找的核心是“每次找中间元素对比,将查找范围缩小一半”,就像我们在字典中查单词——先翻到中间页,根据单词首字母判断目标在左半本还是右半本,再在缩小的范围里重复这个过程,直到找到目标或确定没有目标。综上,折半查找通过“分治缩小范围”的逻辑,在有序顺序表中实现了高效查找,其判定树直观反映了查找过程,平均查找长度远低于顺序查找。平均查找长度(ASL)是衡量折半查找效率的核心指标,需分别计算“查找成功”和“查找失败”两种情况,计算时需结合判定树的节点深度。(如数组),因为需要随机访问中间位置的元素。
2025-10-23 10:57:56
699
原创 数据结构——顺序查找
如果查找表是有序的(如升序排列),顺序查找可以做一点优化:当遍历到某个元素的关键字大于目标关键字时(假设升序),可以直接判定查找失败,无需继续遍历。为了减少这种开销,可以引入“哨兵”机制——在查找表的一端(通常是数组的第0个位置)放置一个与目标关键字相等的元素,这样在遍历过程中就不需要判断是否越界,只需判断是否找到目标即可。例如,在通讯录中,常用联系人被查找的概率更高。假设查找表中有n个元素,每个元素被查找的概率相等(均为1/n),且第i个元素(1≤i≤n)在第i次比较时被找到(即需要比较i次)。
2025-10-22 16:31:42
929
原创 数据结构——关键路径
综上,关键路径通过计算事件和活动的四个核心参数,精准定位了项目中的关键活动和最长路径,为项目工期管理提供了科学依据。例如,若某个非关键活动因意外延迟超过其缓冲时间,它可能会成为新的关键活动,甚至形成新的关键路径。为了找到关键路径,需要先计算四个核心参数:事件的最早发生时间、事件的最迟发生时间、活动的最早开始时间、活动的最迟开始时间。的最迟发生时间前完成,所以最晚开始时间等于终点事件的最迟发生时间减去活动的持续时间。的最迟开始时间是指在不延误项目总工期的前提下,该活动最晚可以开始的时间,计算公式为。
2025-10-22 15:17:08
936
原创 数据结构——拓扑排序(2)
此外,拓扑排序与“有向图的深度优先搜索(DFS)”也存在关联:通过DFS遍历,记录顶点的“完成时间”(即离开顶点的时间),然后按完成时间从大到小排序,也可得到拓扑排序结果。这个过程类似“剥洋葱”:最外层的“无依赖顶点”先被“剥下”,然后内层的顶点因依赖被移除而成为新的“无依赖顶点”,直到整个“洋葱”被剥完(或发现中间有无法剥下的部分,即环)。拓扑排序的实现需要借助“入度数组”记录各顶点的入度,以及“邻接表”存储图的边关系,同时用“队列”(或栈)高效管理入度为0的顶点。例如,在图中添加一条边。
2025-10-22 14:44:30
993
原创 数据结构——拓扑排序
fill:#333;color:#333;color:#333;fill:none;important;important;important;color:#555!important;important;important;important;color:#555!important;ABCDEF说明:所有顶点均已输出,样例的一种拓扑序列为“A,B,C,D,E,F”。若候选集合在某些时刻包含多个顶点,具体的弹出顺序可能不同,从而产生不同的合法序列。(3)入度与候选集合的“账本”跟踪。
2025-10-22 14:39:23
880
原创 数据结构——最短路径算法
在带权图中,“最短路径”指的是从一个顶点到另一个顶点的路径中,的路径。根据需求不同,最短路径问题可分为“单源最短路径”(从一个固定源点到其他所有顶点的最短路径)和“各顶点间最短路径”(任意两个顶点间的最短路径),对应的经典算法分别是Dijkstra算法和Floyd算法。
2025-10-21 18:50:21
1275
原创 数据结构——最小(代价)生成树
要解决“连通图中选n−1条边连接所有顶点且总权值最小”的问题,最小(代价)生成树是核心工具。它有两种经典算法——Kruskal和Prim,下面分别从思想、过程、代码及细节展开深入讲解。
2025-10-21 18:18:06
502
原创 数据结构——广度优先搜索
要实现图的“分层遍历”,广度优先搜索(BFS)是核心方法——它遵循“先访问离起始顶点近的顶点,再逐步向外扩散”的逻辑,像水波纹一样覆盖所有可达顶点。下面从思想、过程、实现和特点展开,结合图示详细讲解。
2025-10-21 17:25:50
1011
原创 数据结构——十字链表
为了同时高效处理有向图的“出弧”和“入弧”操作,十字链表作为有向图的链式存储结构,融合了“出弧链表”与“入弧链表”的特性,能便捷地管理顶点的出度和入度。
2025-10-21 16:45:35
895
原创 数据结构——邻接表
要解决邻接矩阵对稀疏图“空间浪费”的问题,邻接表采用“数组+链表”的结构,灵活存储顶点间的连接关系。它由(数组)和(链表)组成,能高效适配稀疏图的存储需求,下面分结构、类型及特点展开讲解。
2025-10-21 15:23:53
1186
原创 数据结构——邻接矩阵
无权图:若顶点( v_i )与( v_j )间有边(无向图)或弧(有向图,( v_i )指向( v_j )),则( A[i][j] = 1 );否则( A[i][j] = 0 )(或用特殊值标记“无连接”)。带权图(网):若顶点( v_i )与( v_j )间有边/弧,且权值为( w_{ij} ),则( A[i][j] = w_{ij} );否则( A[i][j] )用“无穷大(( \infty ))”或特殊标记表示“无连接且无权值”。
2025-10-21 11:18:08
683
大话企业级Android开发_数据库
2011-10-17
大数据开发教学手册,包含Hadoop、Zookeeper、HBASE、Hive、Kafka等主流大数据技术的实操讲解
2024-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅