随笔分类 - 数据结构与算法
摘要:堆排序是一种高效的排序算法,通过构建最大堆或最小堆来实现排序。它的时间复杂度为O(nlogn),适用于大规模数据的排序。 一、堆排序的原理 堆是一种特殊的完全二叉树,它有以下特点: 最大堆:任意节点的值都大于或等于其子节点的值。 最小堆:任意节点的值都小于或等于其子节点的值。 堆排序的基本思想是利用
阅读全文
摘要:克鲁斯卡尔算法是一种用于求解最小生成树问题的贪心算法。最小生成树是一个连通图的生成树,其边的权重之和最小。 一、原理 克鲁斯卡尔算法的核心思想是按照边的权重从小到大逐渐选择连通图的边,直到所有顶点都被连接为止。在每一步中,选择当前权重最小的边,若该边的两个顶点尚未连接,则将其添加到最小生成树的边集合
阅读全文
摘要:导言 冒泡排序是最基本、最简单的排序算法之一,它通过多次遍历待排序的数组或列表,依次比较相邻的元素并交换位置,使得较大(或较小)的元素逐渐“浮”到数组的一端。 原理分析 冒泡排序算法通过多次遍历待排序的数组或列表,依次比较相邻的元素并交换位置,使得较大(或较小)的元素逐渐“浮”到数组的一端。具体来说
阅读全文
摘要:折半查找算法(Binary Search Algorithm)是一种高效的搜索算法,常用于已排序的数组或列表中进行查找操作。它的核心思想是通过比较中间元素与目标值的大小关系来确定目标值在数组的哪一部分,从而缩小搜索范围。 一、原理 折半查找算法利用了已排序数组的特性,采用分治策略,将问题分解为规模更
阅读全文
摘要:快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它的平摊期望时间是 O(nlogn),且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(nlogn) 的归并排序要小很多。所以,对绝大多数顺序性较弱的随机数列而言,快速排序总是优于归并排序。 快速排序(QuickSor
阅读全文
摘要:弗洛伊德算法(Floyd's algorithm)是一种用于解决图中最短路径问题的经典算法。由美国计算机科学家罗伯特·弗洛伊德于1962年提出,该算法通过动态规划的思想,在图中寻找任意两个节点之间的最短路径,具有广泛的应用。本文将详细介绍弗洛伊德算法的原理、实现细节以及应用案例。 一、原理 动态规划
阅读全文
摘要:哈夫曼树又称最优二叉树,是一类带权路径长度最短的二叉树,有着广泛的应用。 基本概念 权:将树中的结点赋上一个有着某种意义的数值 路径:从A结点道B结点所经过的分支序列 路径长度:从A结点道B结点所经过的分支数目 查找效率 平均查找长度(ASL)取决于树的高度 ASL=(1+2*2+3)/4=2 AS
阅读全文
摘要:在暴力匹配中,每趟匹配失败都是模式后移一位再从头开始比较。而某趟已匹配相等的字符序列是模式的某个前缀,这种频繁的重复比较相当于模式串在不断地进行自我比较,这就是低效率的根源。 理解KMP算法 KMP算法,全称为Knuth-Morris-Pratt算法,是一种字符串匹配算法,用于在一个文本串S中查找一
阅读全文
摘要:树结构是一种非常重要且广泛应用的数据结构。它以节点和边的形式组织数据,具有层次关系和递归性质。树结构在计算机科学领域中有着广泛的应用,例如文件系统、数据库索引、网络路由等。 一、什么是树 树是数据结构中的一种,其属于非线性数据结构结构的一种,我们前文所提到的数据结构多数都是线性的,这也是较为简单的数
阅读全文

浙公网安备 33010602011771号