数据结构与算法
文章平均质量分 57
crazy_yyyyy
这个作者很懒,什么都没留下…
展开
-
单链表的相关算法
好久没有看数据结构,打算最经好好复习一下数据结构,那就从头开始看起,这次先总结一下线性表这一章的有关操作,虽然思想简单,但是也不能轻视。一、头插法基本思想:首先申请一个头结点,并将头结点指针域置为NULL,每读入一个数据就申请一个节点,并插入到链表的头结点之后。注意在链表中的数据与读入的数据顺序相反。核心代码:LinkList Create_list(){Linklist H原创 2016-01-17 11:23:56 · 585 阅读 · 0 评论 -
最短编辑距离
这学期在上算法课,最近让写一个关于最短编辑距离的,写完之后还是总结一下:问题描述: 编辑距离是指 两个字符串之间,由一个转成另一个所需要的最小编辑操作数。设A B两个字符串,允许的字符串操作包括:(1)添加一个字符(2)删除一个字符给大家提供两个版本的代码:java版public class Levenshtein { public static void main(St原创 2016-05-13 16:24:56 · 675 阅读 · 0 评论 -
海量数据中选出最大的N个
前几天,面试了一家公司,其中出了一道算法应用题,题是这样的: 有100个文件,每个文件里有10000个数据,选出前100个大的数据;听到这么大的数据,第一个想法就是 堆排,因为这个题很符合堆排的条件: (1)大数据 (2)选择前多少个当我说出堆排的时候,自己也有在想,这么多的数据,能不能一下全部读入呢,,如果全部读入,要用多少空间来存储???之后,面试官提醒我,利用 归并原创 2016-04-07 19:59:42 · 937 阅读 · 0 评论 -
顺序查找(带监视哨)
顺序查找 可以从前到后,也可以从后到前。这两种都可以(1)最基本的顺序查找int seqsearch(SeqList L,KeyType k){i = L.length;while(i >= 1 && L.r[i].key != k) i--;if(i > = 1) return i;return 0;}(2)优化该顺序查找,就是添加监听哨,上面的查找方式时间主要原创 2016-02-29 21:01:36 · 12821 阅读 · 3 评论 -
希尔排序
一、基本思想希尔排序就是缩小增量排序。这个还真不好描述,在百度里看到一个图是写希尔排序的过程的,就直接盗过来了,不废话了,直接上图。上面的过程可是相当的清晰,比我写的清晰多了,现在呢,我给大家说一下要注意的点d1 的取值 d1 = n/2, n 为数据的个数 d2的取值 d2 = d1/2 d3 = d2/2.........di = 1;直到d的原创 2016-03-03 17:45:00 · 429 阅读 · 0 评论 -
折半插入排序
看到这个名字,大家也就懂了,这里有 借助 折半查找的思想,如果折半查找的思想不明确,可以参考我之前写过的一篇折半查找的博客。折半插入排序的效率相比较直接插入排序的效率要高,那么,它效率提升在哪里呢。其实他两的不同就是在确定关键字的插入位置时采用不同的算法。直接插入排序是一个一个的比较然后选出插入位置,而折半插入排序是借助折半查找的方法找到插入位置。下面来说一下核心代码:void ins原创 2016-03-03 16:21:33 · 595 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
哈夫曼树在数据结构里可是鼎鼎大名啊,不过学数据结构已经是一年之前的事情了,没看书之前,还真想不起来哈夫曼树是个啥,现在就来说说,哈夫曼树到底是个什么东东。一、基本概念哈夫曼树:哈夫曼树就是带权路径长度最短的树,又称最优二叉树。路径:一个结点到另一个结点之间的分支序列,构成这两个结点之间的路径。路径长度:两个结点之间路径的条数树的路径长度:从根结点到每个结点的路径长度之和 (原创 2016-02-02 21:28:13 · 854 阅读 · 0 评论 -
折半查找法
一、折半查找使用范围:(1)顺序存储结构 (2)按照关键字大小有序排列二、基本思想:将待查范围的中间元素的关键字key与给定的K值进行比较,结果又三种情况:(1)k = key 查找成功(2)k (3)k > key 待查元素在关键字为key的记录之前 在后半部分子表进行查找三、实例:有序顺序表关键字分别为 12 19 25 33 46 58 64 8原创 2016-02-15 08:22:49 · 1465 阅读 · 0 评论 -
线索二叉树
(1)为什么要引入线索二叉树:当用二叉链表来存储二叉树时,每次只能找到左右孩子的信息,不能直接找到其前驱和后继结点的信息。线索二叉树就解决了这个问题。(2)线索二叉树的结点结构定义:结点结构图: LChild Ltag Data Rtag RChild A.如果有左孩子,则LChild继续指向左孩子,否则,指向该结点的前驱结点。B.如果有右孩子,则RC原创 2016-01-22 11:21:00 · 9988 阅读 · 3 评论 -
广义表相关概念
今天看了一些关于广义表的知识,不多说,先说一下广义表的相关概念。广义表是n(n>= 0)个元素的有限序列,记做 LS = (d1,d2,...,dn) 这个定义看似简单,还是要认真看,理解子表:如果广义表LS的某个元素di本身也是广义表,则称di为LS的子表。空表:表中没有元素,长度为0表头:LS不为空时,d1就是表头。表尾:其余元素组成的子表,称为表尾。 注意:广义原创 2016-01-20 16:51:08 · 706 阅读 · 0 评论 -
二叉树的遍历
看了一下数据结构中树的相关知识,树这一章还是很重要的,直接说知识点吧一、基本概念树:n(n >= 0)个结点的有限集合结点的度:结点拥有子树的个数树的度:树中所有度的最大值 (注意是 最大值)树的深度:树中所有节点层次的最大值 叶子结点:度为0的节点满二叉树:在深度为K的满二叉树中,1至k-1层每个结点均有两个孩子。顾名思义,也就是除过叶子结点,其他的节点都有左右原创 2016-01-20 16:40:21 · 519 阅读 · 0 评论 -
串匹配-BF算法
今天看了一下数据结构中串的相关知识,着重看了一下BF算法和KMP算法,虽然说是看,但是对于KMP算法中next的值的怎么得来的,还是没有看懂只记得当初学的时候,大家说是离散数学上的知识,唉,现在又忘光光了,还是先说一下BF算法。看书的时候才知道,原来BF算法又称蛮力匹配算法,不啰唆了,先描述一下该算法。从主串S的第pos位置开始,与模式串T比较,比较的策略是 从前到后依次比较,主串中设置指原创 2016-01-17 11:27:04 · 4482 阅读 · 0 评论 -
插入类排序----直接插入排序
一、基本思想将第i个记录的关键字Ki,与前面的r[1]~r[i-1]个记录元素比较,将关键字大于Ki的 记录向后移一个位置,知道遇见关键字小于 Ki 的记录,该位置既为r[i]插入的位置。在这里要注意,比较时,i为要比较记录的下标,则从 i-1 开始比,即和她之前的比。r[0]用作监视哨;二、具体例子比如 关键字为 33 12 24 48 33 68原创 2016-03-02 22:03:28 · 473 阅读 · 0 评论