随笔分类 -  数据结构

摘要:一、什么是Cache 1 概念 Cache,即高速缓存,是介于CPU和内存之间的高速小容量存储器。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近CPU的频率。 当CPU发出内存访问请求时,会先查看 Cache 内是否有请求数据。 如果存在(命中), 阅读全文
posted @ 2017-09-26 15:49 ZYVV 编辑
摘要:原理介绍 map介绍 Map是STL[1]的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗 阅读全文
posted @ 2017-09-26 15:26 ZYVV 编辑
摘要:题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right( 阅读全文
posted @ 2017-09-20 14:32 ZYVV 编辑
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 class Solution { public: void Mirror(Tre 阅读全文
posted @ 2017-09-18 10:56 ZYVV 编辑
摘要://第一种方法是:非递归方法 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNo... 阅读全文
posted @ 2017-09-18 10:23 ZYVV 编辑
摘要:题目 思路 (1)看到这个题目,第一反应不就是个等差数列求和的题目,考虑每个数字1,2,3,4出现时n的数目,发现最后一个1,2,3,4都是满足等差数列的,大家可以自己推导一下,等差数列的求和公式: 这里a1为1,d为1,因此化简后si = (i * i + i) / 2,通过这里可以自然的写出一个 阅读全文
posted @ 2017-09-10 10:40 ZYVV 编辑
摘要:对一棵二叉树进行遍历,我们可以采取3中顺序进行遍历,分别是前序遍历、中序遍历和后序遍历。这三种方式是以访问父节点的顺序来进行命名的。假设父节点是N,左节点是L,右节点是R,那么对应的访问遍历顺序如下: 前序遍历 N->L->R 中序遍历 L->N->R 后序遍历 L->R->N 所以,对于以下这棵树 阅读全文
posted @ 2017-09-10 10:32 ZYVV 编辑
摘要:什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 记录的存储位置=f(关键字) 这里的对应关系f称为 阅读全文
posted @ 2017-08-16 20:36 ZYVV 编辑
摘要:直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。 1. 初始时,数组全为无序区为a[0..n-1]。令i=0 2. 阅读全文
posted @ 2017-08-09 17:08 ZYVV 编辑
摘要:直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。 1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1 2. 将a[i]并入当前的有序 阅读全文
posted @ 2017-08-09 17:04 ZYVV 编辑
摘要:冒泡排序是非常容易理解和实现,,以从小到大排序举例: 设数组长度为N。 1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 3.N=N-1,如果N不为0就重复前面二步,否则排 阅读全文
posted @ 2017-08-09 16:52 ZYVV 编辑
摘要:快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想 分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有 阅读全文
posted @ 2017-08-09 16:40 ZYVV 编辑
摘要:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一 阅读全文
posted @ 2017-08-09 16:11 ZYVV 编辑
摘要:前两天去女子监狱某部门维护了下导师10年前的一个程序,发现偌大的一个系统,真正常用的1/10感觉都不到;其实就像我们所学一样,像容器一样装在自己的脑海中,工作中用到的知识确实极少的;知识的深入带来的必然是广度发展,万事万物皆有联系,而且厚积才能薄发。 排序算法写了n种,可不像孔乙己一样考验"茴香豆" 阅读全文
posted @ 2017-08-09 16:04 ZYVV 编辑
摘要:在我们生活的这个世界中到处都是被排序过的东东。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东东都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场的是我们的主人公小哼,上面这个可爱的娃就 阅读全文
posted @ 2017-08-09 15:24 ZYVV 编辑
摘要:位运算 位运算即在比特级别进行操作的技术。使用位运算技术可以带来更快的运行速度与更小的内存使用。 测试第 k 位:s & (1 << k); 设置第k位:s |= (1 << k); 关闭第k位:s &= ~(1 << k); 切换第k位:s ^= (1 << k); 乘以2n:s << n; 除以 阅读全文
posted @ 2017-08-09 15:07 ZYVV 编辑
摘要:参考博文:http://blog.csdn.net/v_july_v/article/details/6897097 第一部分、Trie树 1.1、什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串 阅读全文
posted @ 2017-08-09 14:31 ZYVV 编辑
摘要:一、哈夫曼树的概念和定义 什么是哈夫曼树? 让我们先举一个例子。 判定树: 在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换成五个等级输出。大家可能认为这个程序很简单,并且很快就可以用下列形式编写出来: if(score<6 阅读全文
posted @ 2017-06-30 20:17 ZYVV 阅读(353) 评论(0) 推荐(0) 编辑
摘要:1.引言: 若要删除左边的(V0,V2)这条边,需要对图下表的阴影两个结点进行删除操作。 2.邻接多重表的存储结构: iVex和jVex:是与某条边依附的两个顶点在顶点表中的下标。 iLink:指向依附顶点iVex的下一条边。 jLink:指向依附顶点jVex的下一条边。 3.邻接多重表示意图绘制: 阅读全文
posted @ 2017-06-30 15:19 ZYVV 阅读(1238) 评论(0) 推荐(0) 编辑
摘要:邻接表固然优秀,但也有不足,例如对有向图的处理上,有时候需要再建立一个逆邻接表。 而这个十字链表就是把邻接表和逆邻接表结合的玩意。 所以重新定义节点的数据结构 我们看到顶点表多了一个指针。多了一个In的指针。 描述成代码就是这样 假设此时我们保存的是v1 -> v0 这条边,此时headVex就是1 阅读全文
posted @ 2017-06-30 15:13 ZYVV 阅读(3161) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示