数据结构
文章平均质量分 53
believe_s
这个作者很懒,什么都没留下…
展开
-
玩转数据结构——均摊复杂度和防止复杂度的震荡(笔记)
数据规模时间复杂度 并不是所有的双层循环都是O(n^2)的复杂度实验来确定复杂度// O(N) 两倍增加int findMax( int arr[], int n ){ assert( n > 0 ); int res = arr[0]; for( int i = 1 ; i < n ; i ++ ) ...原创 2018-06-22 21:27:36 · 1748 阅读 · 1 评论 -
高效的序列化/反序列化数据方式 Protobuf
高效的序列化/反序列化数据方式 Protobufgithub地址目录protocolBuffers 序列化Int32StringMapslice序列化小结protocolBuffers 反序列化Int32StringMapslice序列化小结序列化/反序列化性能最后 protocolBuffers序列化上篇文章中其实已经讲过了 encode ...原创 2019-09-09 15:54:10 · 2049 阅读 · 0 评论 -
高效的数据压缩编码方式 Protobuf
高效的数据压缩编码方式 Protobufgithub地址目录ProtocolBuffers 是什么为什么要发明 ProtocolBuffersproto3 定义 Message分配字段编号保留字段默认字段规则各个语言标量类型对应关系枚举枚举中的保留值允许嵌套枚举不兼容性更新 Message未知字段Map 类型JsonMappingproto3 定义 Se...原创 2019-09-09 15:52:39 · 2422 阅读 · 0 评论 -
Protobuf使用
Protobuf使用github地址目录proto3的更新定义协议格式编译protobufprotobuf_API枚举和嵌套类标准消息方法解析和序列化写一条消息阅读消息编译Protobuf扩展优化高级用法proto3的更新在第一行非空白非注释行,必须写:syntax = "proto3";字段规则移除了 required,并把 optio...原创 2019-09-09 15:51:21 · 651 阅读 · 0 评论 -
无损压缩——Huffman编码
最近项目中涉及到人脸关键点中神经网络的压缩,采用了性能较好的哈夫曼编码进行。源码地址:https://github.com/believeszw/HuffmanCompress1 引言 哈夫曼(Huffman)编码算法是基于二叉树构建编码压缩结构的,它是数据压缩中经典的一种算法。算法根据文本字符出现的频率,重新对字符进行编码。因为为了缩短编码的长度,我们自然希望频率越高的词,编码越短,...原创 2019-05-10 11:07:07 · 6408 阅读 · 0 评论 -
基于java的数据结构学习——数组实现的队列和循环队列及性能对比
队列 Queue队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 队列是一种先进先出的数据结构队列的实现及复杂度分析Queue<E>void enqueu(E) E dequeue() E getFront() int getSize() boolean isEmpty()数组队列的复杂度...原创 2019-01-02 23:32:39 · 247 阅读 · 0 评论 -
leetcode练习——栈(1)
题号20:Invalid ParenthesesGiven a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.An input string is valid if:Open brackets must be cl...原创 2019-01-02 15:18:45 · 307 阅读 · 0 评论 -
基于java的数据结构学习——数组实现的栈以及简单应用
栈 Stack栈是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种后进先出的数据结构栈的应用无处不在的Undo操作(撤销) 括号匹配(编译器) 程序调用的系统栈 funA(){ 1 ... 2 B() 3 ... } funB(){ ...原创 2019-01-02 14:36:07 · 215 阅读 · 0 评论 -
基于java的数据结构学习——数组实现的栈以及简单应用C++实现
基于java的数据结构学习——数组实现的栈以及简单应用的 C++ 实现源码: //// Created by PC-Saw on 2019/1/3.//#ifndef DATA_STRUCTURE_ARRAYSTACK_H#define DATA_STRUCTURE_ARRAYSTACK_H#include "Stack.h"#include "MyArray.h"...原创 2019-01-03 16:11:32 · 225 阅读 · 0 评论 -
leetcode练习——数组篇(1)(std::ios::sync_with_stdio(false);std::cin.tie(nullptr);)
题号1. 两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 ...原创 2018-12-17 21:30:47 · 359 阅读 · 0 评论 -
基于java的数据结构学习——动态数组C++类模板(含拷贝构造,重载常见运算符)
之前实现了java的动态数组,试着写了个C++版的,同样对时间复杂度振荡进行了处理。纯手打,代码如下 ://// Created by PC-Saw on 2018/12/19.//#ifndef DATA_STRUCTURE_MYARRAY_H#define DATA_STRUCTURE_MYARRAY_H#include <iostream>using na...原创 2018-12-20 20:33:24 · 606 阅读 · 0 评论 -
基于java的数据结构学习——泛型动态数组的封装
public class Array<E> { private E[] data; private int size; // 构造函数 public Array(int Capacity){ data = (E[])new Object[Capacity]; size = 0; } // 默认构造函数...原创 2018-12-14 11:08:08 · 225 阅读 · 0 评论 -
内存问题提醒!结构体+protobuf做协议体发送!序列化
内存的三种分配方式: 1. 从静态存储区分配:此时的内存在程序编译的时候已经分配好,并且在程序的整个运行期间都存在。全局变量,static变量等在此存储。 2. 在栈区分配:相关代码执行时创建,执行结束时被自动释放。局部变量在此存储。栈内存分配运算内置于处理器的指令集中,效率高,但容量有限。 3. 在堆区分配:动态分配内存。用new/malloc时开辟,delete/fre...原创 2018-09-05 08:32:45 · 1778 阅读 · 0 评论 -
数据结构——数组
数组github地址数组基础数组最大的有点:快速查询。索引快数组最好应用于 “索引有语义” 的情况但并非所有有语义的索引都适用于数组(身份证号)数组也可以处理 ”索引没有语义“ 的情况封装数组类数组类该具备的功能:增 删 改 查使用泛型:让我们的数据结构可以放置 “任何” 数据类型实现构造函数我们希望有两个构造函数,可以支持给定容量和默认容量,这里默认容量我们...原创 2019-09-20 14:47:50 · 184 阅读 · 0 评论