- 博客(10)
- 资源 (3)
- 收藏
- 关注
原创 第9天:查找(一)--基本概念
查找的特征 在选择查找算法时需要考虑如下三个主要特性。4.1.1准备时间一些比较技术在可以执行查找之前要求先进行大量的计算。如果这要花费许多时间,而要查询的文本却很少,那么准备时间可能会超过通过使用具有更高理论速度的算法所节省的时间。4.1.2运行时间
2014-01-02 22:31:15
428
原创 第6天:散列HASH(三)冲突解决办法之非线性再散列法
非线性再散列法之前讨论过线性再散列法的优缺点,现在我们再来看一下非线性再散列法。与线性再散列法顺序遍历散列表不同,非线性再散列法会重新计算一个散列Key,并通过它跳转到表中一个完全不同的部分。其思想是希望通过跳转到表中不同的部分,可以避免相似值的聚集。如果再散列函数跳转到的槽已经被占用了,则继续执行新一轮的再散列和跳转。如果散列表快满了,那么可能会出现多次再散列的情况。为了避免这个问题,仅当散
2013-12-31 22:15:35
874
原创 第5天:散列HASH(二)冲突解决办法之线性再散列法
冲突解决办法除了可以设计出完美散列函数的情况之外,散列表必须具备合理地处理冲突的能力。当散列表给两个不同的数据项二提供相同的散列值时,就会发生冲突。解决冲突广泛采用以下三种方法:(1)线性再散列法, 简单地按顺序遍历散列表,寻找下一个可用的存储位置;(2)非线性再散列法, 计算一个新的散列值;(3)外部拉链法,将散列表中的每个位置市委具有相同散列值的数据项的链表的同步,散列表将发送冲突的项添加
2013-12-27 22:57:14
1815
原创 第4天:散列HASH(一)
散列(hash)技术是为了提供对内存中数据的快速,随机访问。其原理很简单,根据要存储的数据通过特定算法(散列函数)计算出一个能够直接转换得到数据存储位置的值(散列值)。这样在访问指定数据所需的时间由一般的查找转换为通过散列函数计算散列值,从而大大提高访问速度。其实散列就是一种数据的映射,-----------------------------to be continue-----
2013-12-26 23:16:36
516
原创 第三天:基本数据结构--队列
队列在实现上比较简单,在C中一般使用数组或链表实现。对于队列主要有一点需要主要,就是内存问题。如果入队new,出队delete一般情况下会导致队列在内存中不断后移,这个过程会使内存碎片化,最终导致无合适内存可用。避免这个问题有两个方法:1、使用自己的函数来申请和释放内存,维护一个内存池,这种方式也是解决内存碎片的通用方式,不局限于队列。2、维护两个链表,当出队的时候不删除而是将该节点添加到另一
2013-12-25 21:50:20
423
原创 第二天:基本数据结构
《程序员实用算法》第二章,基本数据结构总结起来,其实算法是为了达到某种目的而操作数据的方式,所以数据结构显得十分重要。这一章主要对基本的数据结构进行了讲解描述,包括:单项链表,双向链表,栈,队列。对美中数据结构给出了原程序,在实际使用的时候可以直接套用,快速实现需要的功能,还是很实用的。
2013-12-24 22:49:48
363
原创 第一天:算法的评估
先读《程序员实用算法》这本书吧,每天一小步算法一般被设计用于以最小的代价高效地解决特定的问题。一般来说,算法最重要的度量标准时时间。度量性能算法不依赖于计时,而是依赖于一个直观的方程,以显示输入的代销与性能直接的关系。用于显示这种关系的传统方法是使用符号O,称为大O表示法(big-oh notation)。在大O表示法中并不考虑可能影响性能的其它因素,该表示法只是简单的说明数据
2013-12-23 22:50:28
568
原创 每日两事
从今天开始写博客,也是第一次写,主要是为了监督自己,养成总结的习惯。从毕业到现在也两年有余,甚是迷茫,感觉荒废了太多光阴,从今天开始力争每天做两件事。1、每日读一个小时书2、每日一题OJ
2013-12-23 21:31:06
400
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人