
数据结构和算法
圆月弯刀丶
重剑无锋 大巧不工
展开
-
浅谈数据结构和算法:二叉树
歇了几天了,没有写博客。从今天开始要总结树和二叉树了。那么什么是树呢?1,树的定义:1)有且仅有一个特定的称为根Root的结点。2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每个集合本身又是一个棵树,并称为根的子树。2,树的表示方法:最常见的是树形表示法和广义表表示法,下面是树形表示法,如图所示。上图的广义表表示法为:(A(B(D,E),C(转载 2016-10-12 15:25:45 · 3907 阅读 · 0 评论 -
Protobuf 语法指南
本指南描述了怎样使用protocol buffer 语法来构造你的protocol buffer数据,包括.proto文件语法以及怎样生成.proto文件的数据访问类。(本文只针对proto2的语法)本文是一个参考指南——如果要查看如何使用本文中描述的多个特性的循序渐进的例子,请在http://code.google.com/intl/zh-CN/apis/protocolbuffer转载 2017-10-19 09:15:52 · 404 阅读 · 0 评论 -
七大经典排序算法总结(C语言描述)
目录一.交换排序 1.冒泡排序 2.快速排序 二.插入排序 1.直接插入排序 2.希尔(shell)排序 三.选择排序 1.直接选择排序 2.堆(Heap)排序 四.归并排序 正文简介 其中排序算法总结如下:回到顶部一.交换排序 交换排序的基本思想都为通过比较两个数的大小,当满足某些条件时对它进行交换从而达到排序的目的。...转载 2018-09-05 09:32:36 · 451 阅读 · 0 评论 -
【数据结构】双向链表
//数据结构C语言双向链表实现#ifndef __LIST_H__#define __LIST_H__#include <stdlib.h>#define LIST_ITER_FORWARD 0#define LIST_ITER_REVERSE 1#define ListHead(l) ((l)->head)#define ListTail(...原创 2019-01-08 11:10:39 · 249 阅读 · 0 评论 -
Protocol Buffer的C++入门教程
1.protobuf简介protobuf(Protocol Buffers )是google的开源项目,官网见:click这里,源码见:github。更准确的官方描述是:protobuf是google的中立于语言,平台,可扩展的用于序列化结构化数据的解决方案。简单的说,protobuf是用来对数据进行序列化和反序列化。那么什么是数据的序列化和反序列化呢?见下文。protobuf支持目前转载 2017-10-18 18:58:51 · 766 阅读 · 1 评论 -
Protocol Buffer技术详解(Java实例)
该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++、Java和Python,其中Python主要用于编写各种工具程序。然而为了保证该篇Blog的完整性和独立性,我仍然会将上一篇Blog中已经出现的内容再一次赘述,同时对于Java中特有的部分也会着重介绍。转载 2017-10-18 18:56:38 · 340 阅读 · 0 评论 -
理解哈希表及其查找
以上讨论的查找方法,由于数据元素的存储位置与关键码之间不存在确定的关系,因此,查找时,需要进行一系列对关键码的查找比较,即“查找算法”是建立在比较的基础上的,查找效率由比较一次缩小的查找范围决定。理想的情况是依据关键码直接得到其对应的数据元素位置,即要求关键码与数据元素间存在一一对应关系,通过这个关系,能很快地由关键码得到对应的数据元素位置。【例7.4】11个元素的关键码分别为 1转载 2016-10-12 13:37:25 · 4972 阅读 · 0 评论 -
浅谈算法和数据结构: 哈希表
在前面的系列文章中,依次介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是他们在平均以及最差情况下的时间复杂度:可以看到在时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度。那么有没有查找效率更高的数据结构呢,答案就是本文接下来要介绍了散列表,也叫哈希表(Hash Table)什么是哈希表哈希表就是一种以 键转载 2016-10-12 14:15:10 · 524 阅读 · 0 评论 -
从头到尾彻底解析哈希表算法
说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。第一部分:Top K 算法详解问题描述百度面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如转载 2016-10-12 11:31:50 · 565 阅读 · 0 评论 -
C++表达式计算类示例
// ExprCalc.h#ifndef __EXPR__CALC__H__#define __EXPR__CALC__H__#include #include #include #include enum Token_value{ NAME, NUMBER, END, PLUS='+', MINUS='-', MUL='*', DIV='/'原创 2016-12-28 19:13:59 · 1416 阅读 · 0 评论 -
Protocol Buffer技术详解(语言规范)
该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流。需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一转载 2017-10-18 18:52:39 · 444 阅读 · 0 评论 -
Protocol Buffer技术详解(C++实例)
这篇Blog仍然是以Google的官方文档为主线,代码实例则完全取自于我们正在开发的一个Demo项目,通过前一段时间的尝试,感觉这种结合的方式比较有利于培训和内部的技术交流。还是那句话,没有最好的,只有最适合的。我想写Blog也是这一道理吧,不同的技术主题可能需要采用不同的风格。好了,还是让我们尽早切入主题吧。 一、生成目标语言代码。 下面的命令帮助我们将M转载 2017-10-18 18:55:34 · 381 阅读 · 0 评论