
数据结构与算法设计分析
文章平均质量分 96
数据结构与算法中包括线性表、栈与队列、数组、二叉树、图、动态规划、算法综合等的基本概念、基本理论、基本方法和具备综合运用等等。
晚风(●•σ )
期待与你共同努力,感谢你的关注!
展开
-
数据结构与算法设计分析——NP完全理论
P类问题与NP类问题是计算机科学和数学中的两类重要问题,简单的来说,P类问题是较“容易”的问题,在计算机中,可以在多项式时间内解决,而NP类问题是较“复杂”的问题,它并不能在多项式时间内解决,只能验证是否存在解(解是否正确)。常见的P类问题有排序、搜索算法等等,但不是所有的排序算法都是P类问题,例如,下表中快速排序、堆排序和归并排序是P类问题,其平均时间复杂度呈多项式,由于插入排序、冒泡排序、简单选择排序的平均时间复杂度都呈指数级,所以不属于P类问题,而是NP类问题。排序名称平均时间复杂度旅行商问题中给定原创 2023-12-03 22:54:11 · 528 阅读 · 0 评论 -
数据结构与算法设计分析——常用搜索算法
穷举搜索法也被称为穷举法,其基本思想是将问题的所有的候选解都枚举出来,然后对候选解按照某种顺序进行逐一枚举和检验,并从中找出符合问题要求的候选解作为问题的解。其优点是`实现简单且易于理解`,适合`规模较小`的问题,但当问题的规模较大时,由于需要运行问题所有的候选解消耗大量的时间,从而导致算法的效率大大降低。# 二、图的遍历算法图的遍历算法适合无向图和有向图,有两种方法可分为深度优先搜索(DFS)和广度优先搜索(BFS)。## (一)深度优先搜索(DFS)简单地说,图的深度原创 2023-11-18 16:04:56 · 2645 阅读 · 0 评论 -
数据结构与算法设计分析——动态规划
与分治法不同的是,动态规划通常解决的是`重叠子问题性质`的问题,解决子问题只需一次,解决后会将其解保存并重复使用,避免重复计算。动态规划通常采用自底向上的方式,通过先解决子问题,再解决大问题的方式进行求解。动态规划适合用于`优化问题`,并且能够保证得到全局最优解。动态规划对比贪心法、分治法算法,由于需要存储各种状态,所以其需要的空间更大。三种算法的对比如下表:|名称 |贪心法 | 分治法 | 动态规划 ||适用性 |一般问题 |优化问题 |优化问题 由顶向下的递归法也被称为`带记忆`的由顶向下法原创 2023-10-22 02:00:00 · 892 阅读 · 0 评论 -
数据结构与算法设计分析——分治法
分而治之可称为分治法,即逐个击破,分而治之,含义是将一个复杂问题分解成多个子问题来解决,一直分下去直到每个子问题都可以简单地求解出来,最后合并所有的解,从而得到复杂问题的解。该方法在《数据结构》中的应用场景有查找算法(二分查找)、排序算法(快速排序归并排序)等等。一个问题可以采用分治法的特征有以下:①问题可分解为很多小规模的相同子问题;【前提】②分解后的子问题后可以很容易地解决;③各个子问题是相互独立的;【效率】④分解的子问题的解最后可以合并。【关键】原创 2023-10-09 12:54:55 · 1018 阅读 · 0 评论 -
数据结构与算法设计分析——贪心算法的应用
贪心算法是指不考虑整体上的综合最优决策,而在局部上以最优决策来解决问题,即每次选择的都是最优的解决方案,不考虑该决策对整体的影响。这种方法在处理一些情况下,可以得到最优解的很好近似方案,例如,哈夫曼编码、求最小生成树中的普里姆算法(Prim)克鲁斯卡尔算法(Kruskal)、求单源最短路径中的迪杰斯特拉算法(Dijkstra)等算法。首先,对整体最优解采用贪心算法进行`分解`,将其化为若干个小规模的子问题,这些子问题是相互独立的,然后通过数学归纳法证明,在每一步的选择中,可以依据贪心策略在当前子问题中选择出原创 2023-10-07 00:16:49 · 1478 阅读 · 0 评论 -
数据结构与算法设计分析—— 数据结构及常用算法
线性表是`线性结构`,是包含n个数据元素的有限序列,通过顺序存储的线性表称为`顺序表`,它是将线性表中所有元素按照其逻辑顺序,依次存储到指定存储位置开始的一块连续的存储空间里;而通过链式存储的`链表`中,每个结点不仅包含该元素的信息,还包含元素之间的逻辑关系的信息。 - 顺序表实现简单,`可以随机存取`,其`存储密度大`,但是执行插入、删除操作需要移动大量元素,`效率低`,另外其`存储空间需事先分配`,容易造成空间浪费或溢出。 - 链表不支持随机存取,`只能顺序存取`,通过`指针`来体现元素之间的逻辑原创 2023-09-29 11:10:10 · 3674 阅读 · 0 评论