08 2017 档案

摘要:对于初始化的问题,我之前一直傻傻分不清。有关初始化以及赋值的区别也是一问题,这次回过头来看,配合<<CSAPP>>的内容,对初始化有了一些新的认识。 声明: 在环境/上下文中指定一个变量的名字。也就是说,声明仅仅是让编译器知道,而没有实际分配空间。 初始化:给一个声明后尚未初始化的变量一个有意义的初 阅读全文
posted @ 2017-08-29 20:17 luStar 阅读(18825) 评论(0) 推荐(0)
摘要:最近在重新看<<C++ Primer>>,第一遍的时候const和constexpr看得并不太懂,这次又有了些更新的理解,当然可能仍然有许多不对的地方... 首先,const限定符即“常量”,一旦使用了const,那么对象的值不能再改变,比如: const int i=1; 同时,const修饰的变 阅读全文
posted @ 2017-08-25 21:32 luStar 阅读(561) 评论(2) 推荐(1)
摘要:快速排序是最经典和常用的排序算法了,已经有不计其数的博客0 0 首先介绍下快速排序的原理。快速排序的基础是基于这样的事实:在一个序列中,如果一个节点前面的所有元素都不大于它,后面的所有元素都不小于它,那么当整个序列达到有序状态时,这个节点的位置保持不变。符合这样条件的节点,称为轴点(pivot)。 阅读全文
posted @ 2017-08-19 11:27 luStar 阅读(459) 评论(0) 推荐(0)
摘要:这几天有点抵触情绪,看过了快速排序还有一些别的东西,但是一点都不想写有点复杂的代码0 0拖到了今天终于写了前几天就应该自己写一下的堆排序,完全用C语言写的,下面把代码贴一下。很多地方写得并不好,不过已经经过了测试,可以正确运行。 建堆是最为关键的环节,可以说堆建好了才能开始进行排序。这里为了保持高效 阅读全文
posted @ 2017-08-16 20:31 luStar 阅读(593) 评论(0) 推荐(0)
摘要:二叉堆是一种优先级队列(priority queue)。搜索树维护了全部数据结构的有序性,而在我们不需要得知全局有序,仅仅需要全局的极值时,这样是一种没有必要的浪费。根据对象的优先级进行访问的方式,称为循优先级访问(call-by-priority)。优先级队列本身并不是一个队列结构,而是根据优先级 阅读全文
posted @ 2017-08-11 09:26 luStar 阅读(3009) 评论(0) 推荐(0)
摘要:突然想自己写个桶排序,然后做课后题又发现了计数排序,觉得挺有趣的。不过书上都没有给代码,所以就自己写了一下代码,超级烂0 0下面先简单介绍下这两种排序 桶排序 桶排序,就是根据散列的思想进行数据的排序。假设有M个桶,采用最简单的hash(key)=key,这样无需比较,就可以把数存入相应的桶中。针对 阅读全文
posted @ 2017-08-09 08:43 luStar 阅读(2539) 评论(0) 推荐(0)
摘要:散列表(hashtable)是一种高效的词典结构,可以在期望的常数时间内实现对词典的所有接口的操作。散列完全摒弃了关键码有序的条件,所以可以突破CBA式算法的复杂度界限。 散列表 逻辑上,有一系列可以存放词条的单元(桶)组成。各个桶按照逻辑次序,在物理上也应当是连续的,因而,可以采用数组来实现,散列 阅读全文
posted @ 2017-08-08 17:39 luStar 阅读(747) 评论(0) 推荐(0)
摘要:词典,顾名思义,就是通过关键码来查询的结构。二叉搜索树也可以作为词典,不过各种BST,如AVL树、B-树、红黑树、伸展树,结构和操作比较复杂,而且理论上插入和删除都需要O(logn)的复杂度。 在词典中,key和value的地位相同,支持新的循值访问(call by value)的方式。因为词典的访 阅读全文
posted @ 2017-08-07 11:51 luStar 阅读(2929) 评论(0) 推荐(0)
摘要:红黑树,顾名思义,就是把平衡二叉搜索树的节点赋予两种颜色,通过定义几条规则,达到约束的目的。红黑树可以保证,每次插入删除操作后的重平衡,全树拓扑结构的改变仅需要常数个节点,最坏情况下需要对logn个节点重染色,但是就分摊意义仍然为O(1)。 需要满足的条件: (1)树根始终为黑色 (2)外部节点均为 阅读全文
posted @ 2017-08-03 17:58 luStar 阅读(567) 评论(0) 推荐(0)
摘要:B-树(是B-树不是B减树)的使用,是为了平衡的容量硬盘与较小的内存、以及不同存储器层次之间I/O操作速度的巨大差异。分级存储是行之有效的方法,借助高效的调度方法,可以将内存的“高速度”和外存的“大容量”结合起来。内存的访问速度,与硬盘的访问速度相差几个数量级,因此最好能把一部分经常用到的数据放在内 阅读全文
posted @ 2017-08-02 09:07 luStar 阅读(430) 评论(1) 推荐(0)
摘要:伸展树同样是一种平衡二叉搜索树,它的优势在于,在足够长的序列中能保证分摊意义上的高效率,同时也无需记录高度或者平衡因子等信息。 伸展树的高效前提是局部性:刚刚被访问到的数据,可能在短时间内被再次访问;将被访问的下一元素,可能就在不久之前刚刚访问过的元素的附近。因此,伸展树的策略,就是把刚刚访问到的节 阅读全文
posted @ 2017-08-01 11:11 luStar 阅读(527) 评论(0) 推荐(0)