数据结构与算法
文章平均质量分 88
xiaoziHZP
这个作者很懒,什么都没留下…
展开
-
字典树的实现(c++版)并利用字典树解决leetcode336刷题笔记
字典树,又称前缀树或单词查找树,优点是最大限度的减少无谓的字符串比较,查询效率比哈希表高。Trie树的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。缺点是内存消耗很大。trie树把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构,类似于查阅英语词典。1.基本性质 A.根节点不包含字符,每条边代表一个字符; B.从根节点到某一结点,路径上经过的字符连接起来,为该节点对应的字符串; C.每个节点的所有子...原创 2020-08-06 22:58:13 · 662 阅读 · 0 评论 -
排序之希尔排序
希尔排序是基于插入排序的快速的排序算法。插入排序对于大规模乱序数组插入排序很慢,因为他只会交换相邻的元素,因此元素只能一点一点从数组的一端一到另一端。希尔排序为了加快速度简单的改进了插入排序,交换不相邻的元素以对数组的局部进行排序,并最终将局部有序的数据排序。 希尔排序的思想是使数组中任意间隔为h的元素都是有序的。一个h有序数组就是h个互相独立的有序数组交织在一起组成的一个数组。在进行排序原创 2017-01-07 12:53:14 · 303 阅读 · 0 评论 -
排序之归并排序
归并排序,要将一个数组排序,可以先将它递归的分成两部分,然后在对这两部分数据分别排序,之后再将两个分别有序的序列合并到一起,组成一个全部有序的序列。归并排序最吸引人的性质是他能够保证将任意长度为N的数组排序所需要的时间和NlogN成正比。 代码如下: /* name:归并排序 author:adtim*/#include #include #include #in原创 2017-01-10 21:51:03 · 196 阅读 · 0 评论 -
趣学算法(2)——贪心算法
目录2.2 最优装载问题 算法设计: 算法实现:2.3 背包问题 算法设计:算法实现:2.4 会议安排 算法思想: 算法实现:2.5 最短路径 问题描述: 算法思想:算法实现:2.6 霍夫曼编码 问题描述: 算法思想:...原创 2019-03-08 20:28:25 · 794 阅读 · 1 评论 -
趣学算法(4)——动态规划
目录4.3 最长的公共子序列问题描述:问题分析:算法实现:4.4 编辑距离问题分析:算法思想:算法实现:4.5 游船租赁问题描述:问题分析:算法实现:4.6 矩阵连乘问题描述:问题分析:算法思想:算法实现:动态规划是一种分治思想,但与分治算法不同的是,分治算法是把原问题分解为若干子问题,自顶向下求解各种子问题,合并子问题的解,...原创 2019-03-12 20:36:48 · 413 阅读 · 0 评论 -
趣学算法(3)——递归分治
目录3.2 二分搜索技术 问题分析: 算法思想: 算法设计: 算法实现:3.3 合并排序 问题描述: 问题分析: 算法实现:3.4 快速排序 算法思想: 算法设计: 算法实现:3.5 大整数相乘 问题描述:...原创 2019-03-10 12:28:42 · 474 阅读 · 0 评论 -
数据结构——二叉查找树
二叉查找树的定义二叉查找树(Binary Search Tree),也称为二叉搜索树、有序二叉树或排序二叉树,是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。通常采取二叉链表作为二叉查找树的存储结构...原创 2019-07-30 09:33:35 · 209 阅读 · 0 评论