数据结构与算法
踏浪归来
这个作者很懒,什么都没留下…
展开
-
数据结构与算法 (一) 折半查找/二分查找
1.算法原理: 折半查找用于在线性表中查询结点时 首先直到表的中间结点,将其关键码与给定的要找的值进行比较,若相等,则查询成功,若当前结点的关键码大于要找的值,则继续在表的前半部分进行折半查找,否则继续在表的后半部分进行折半查找 2.注意事项 1)二分查找也为折半查找,它的前提就是被查找的数组的元素,必须是有序排列的。 3)折半公式 ...原创 2018-12-21 15:02:49 · 947 阅读 · 0 评论 -
数据结构与算法 (十) 二叉树 前序遍历 中序遍历 后序遍历
名词解释 度数(degree) 一个结点的子树个数 树叶(leaf) 没有子树的结点称为树叶或终端结点 分支结点(branch node) 非终端结点 子女(child)和儿子(son)非终端结点 父母(parent)若结点s是结点p的儿子 则称p是x的父母或者父亲 有序树(ordered tree) 树中各个结点的儿子都是有序的 层数(level) 定义树根的层数为1...原创 2018-12-30 12:12:34 · 221 阅读 · 0 评论 -
数据结构与算法 (八) KMP算法
1.概念引导 模式匹配:假设P是给定的子串,T是待查找的字符串,要求从T中找到与P相同的所有子串,这个问题称为模式匹配问题,P称为模式,T称为目标,如果T中存在一个或多个模式为P的子串,就给出该子串在T中的位置,称为匹配成功,否则,称为匹配失败 2.算法原理 1).朴素的模式匹配 用P中的字符依次与T中的字符串进行比较,首先...原创 2018-12-24 14:53:18 · 328 阅读 · 0 评论 -
数据结构与算法 (七) 哈夫曼树(Huffman)与哈夫曼编码
1.算法思想 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二...原创 2018-12-23 17:19:20 · 2048 阅读 · 0 评论 -
数据结构与算法 (六) 归并排序
1.算法思想 归并排序的思想 将已经排序的文件进行合并 得到完全排序的文件 合并时只要比较各个子文件的第一个记录的排序码最小的那个记录就是排序后的第1个记录 取出这记录然后继续比较各子文件的第1个记录 便可找出排序后的第二个记录 如此反复 对每个文件经过一趟扫描 便可得到最终的排序结果 2.算法实现 sort.h struct forSort { int key...原创 2018-12-23 16:54:22 · 158 阅读 · 0 评论 -
数据结构与算法 (五) 选择排序
1.算法思想 选择排序的算法思想是:每次从待排序的记录中选出排序码最小的记录,再在剩下的记录中选出次最小的记录,重复这个选择过程,直到完成全部排序 2.算法实现 sort.h typedef int ElementType; struct forSort { ElementType key; }; typedef struct forSort ForSort; v...原创 2018-12-23 16:42:49 · 160 阅读 · 0 评论 -
数据结构与算法 (四) 插入排序
1.算法思想 插入排序的思想是每次选择排序的记录序列的第1个记录,按照排序码的大小将其插入已排序的记录序列中的适当位置,直到所有记录全部排序完毕 2.算法原理 先将第1个记录视为一个有序的记录序列,然后从第2个记录开始,依次将未排序的记录插入这个有序的记录序列中,直到整个文件中的全部记录排序完毕,在排序过程中,前面的记录序列是已经排好序的,而后面的记录序列有待排序处理...原创 2018-12-23 16:36:28 · 145 阅读 · 0 评论 -
数据结构与算法- 五大常用算法总结(分治法,回溯法,分治限界法,贪心算法,动态规划法)
1.分治法(Recurrence and Divide-Conquer) 对于一个规模为n的问题,若该问题可以容易解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题。然后将各个子问题的解合并得到原问题的解 2.回溯法(Back Tracking Method) 在回溯法中,每次扩大当前...原创 2018-12-23 13:51:30 · 2228 阅读 · 1 评论 -
数据结构与算法 (三) 快速排序
1.算法思想 快速排序的算法思想又称分区交换排序算法该排序算法使用分割法对排序文件中的记录进行排序 2.算法原理 从待排序记录中任选一个记录,以这个记录的排序码作为中心值 将其他所有记录划分成两个部分,第一部分包括所有排序码小于中心值得记录 第二部分包括所有排序码大于中心值得记录 而其排序码作为中心值的这个记录,在排序后必然处在这两部分的中间位置 对上述两部...原创 2018-12-22 18:28:02 · 211 阅读 · 0 评论 -
数据结构与算法 (九) 希尔排序
算法思想: 希尔排序是基于插入排序的以下两点性质而提出改进方法的 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量 =1( < …<d2<d1),即所有记录放在同一组中进行直接插入排序为止。 一般的初次取序列的一半为增量,...原创 2018-12-27 11:55:48 · 173 阅读 · 0 评论