
Algorithm
文章平均质量分 92
VHeroin
这个作者很懒,什么都没留下…
展开
-
快速排序 详解
快速排序是在实践中最快的已知排序算法,平均运行时间为O(NlogN),最坏的运行时间为O(N^2)。算法的基本思想很简单,然而想要写出一个高效的快速排序算法并不是那么简单。基准的选择,元素的分割等都至关重要。算法思想快速排序利用了分治的策略。分治的基本基本思想是:将原问题划分为若干与原问题类似子问题,解决这些子问题,将子问题的解组成原问题的解。那么如何利用分治的思想对数据进行排序呢?假如有一个元素集合A:选择A中的任意一个元素pivot,该元素作为基准 将小于基准的元素移到左边,大于基准的转载 2021-05-01 22:59:10 · 368 阅读 · 0 评论 -
快速的比较2组数(文本)的差别
看到群里有个需求,2组1500万个整数(目前是2个文本文件),怎么快速的比较2组的差别?算了一下,1500万个整数,量不是很大,直接可以内存处理。从建立工程到写完,18分钟,测试正确性5分钟,一共才23分钟,值得一炫。...原创 2021-04-02 08:36:34 · 2319 阅读 · 4 评论 -
UTF-16编码详解
首先我们来思考UTF-16的设计思路:我们知道Unicode的范围为0x0~0x10FFFF首先是BMP区间,也就是0x0~0xFFFF这段区间,正好16位就可以表示,也兼容,两全其美那么超过BMP区间的怎么办呢?也就是0xFFFF~0x10FFFF这段,我们先看这段区间有多少个码位,0x10FFFF-0xFFFF=0x100000,那么这个十六进制表示的十进制也就是:1048576个码位...转载 2020-04-22 09:45:04 · 965 阅读 · 0 评论 -
翻译《文件系统取证分析》第13章
第13章 NTFS 数据结构这是关于NTFS的第三章亦是最后一章,这里我们将分析它的数据结构。前两章写了它的基本概念和怎么去解析它。对许多人来说,目前为止所涉及的知识已经足够了,但我们中的其他人想知道更加多的知识。本章的组织方式是我们先了解数据结构的基础元素,与其他的文件系统章节不同, 本章的编写是为了在章节11“NTFS 概念”和章节12“NTFS 解析”之后阅读。章节的第一部分可以同时于章...原创 2020-03-17 21:32:29 · 1566 阅读 · 0 评论 -
BF、KMP、BM、Sunday算法讲解
原文地址: https://www.cnblogs.com/Syhawk/p/4077295.html BF、KMP、BM、Sunday算法讲解 字串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一。 事实上也就是从一个母串中查找一模板串,判定是否存在。 现给出四种匹配算法包括BF(即二维循环匹配算法)、KMP、BM、Sunday算法,着重讲KMP算法,其他算法尽量详...转载 2018-03-11 21:43:30 · 772 阅读 · 0 评论 -
删除超大文本文件中的某行(支持超长行)
之前一朋友说起这个需求,还发了篇文章过来,里面不少实现的办法,最后测试结论是sed,awk的最快?!我感觉自己能够写得更好,受不了这家伙的激将法,更多时候不是实现不实现的问题,而是效果问题。昨晚忍不住动手自己写了一个。测试了几次,正确了(说不定还有BUG),应该能够比sed,awk那些快,文章上的一些代码不用跑看看就知道结果了,也可以改成单个文件处理,还能再优化,优化方式具体查我之前发的文章。//...原创 2018-05-05 08:41:50 · 1161 阅读 · 0 评论 -
linux版删除超大文本文件中的某行(支持超长行)完整代码
看到的写法,一行行的读,一行行的写(更有一个字节一个字节的读,这样更加慢),这样写起来代码虽然简单,但是速度会很慢,而且当一行的长度超过缓冲,就有问题了。快的方法是分三步走,整个buffer整个buffer的读,同时找换行符,找到要删除的行之后,再找这行的结尾,然后从结尾开始就只需要整个buffer的读写就可以了。经过测试,1000万行,86M的文本文件,瞬间处理完。#include <sy...原创 2018-05-05 13:43:41 · 2291 阅读 · 0 评论 -
请要相信我,30分钟让你掌握AVL树(平衡二叉树)
原文地址: https://blog.youkuaiyun.com/yourenhello/article/details/99813732013年08月15日 16:37:53阅读数:3731 请要相信我,30分钟让你掌握AVL树(平衡二叉树)前言:本文不适合 给一组数据15分钟就能实现AVL的插入和删除操作的大牛(也请大牛不要打击小菜)本文适合,对avl还不了解,还...转载 2018-07-14 18:28:48 · 261 阅读 · 0 评论 -
AVL树(一)之 图文解析 和 C语言的实现
原文地址: http://www.cnblogs.com/skywang12345/p/3576969.htmlAVL树(一)之 图文解析 和 C语言的实现 概要本章介绍AVL树。和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现。本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++和Java版本的实现。建议:若您对"二叉查找树"不熟悉,建议先学...转载 2018-07-14 21:09:46 · 360 阅读 · 0 评论 -
字符串匹配——Sunday算法
原文地址: http://blog.youkuaiyun.com/q547550831/article/details/51860017字符串匹配——Sunday算法基本思想及举例Sunday算法由Daniel M.Sunday在1990年提出,它的思想跟BM算法很相似:1只不过Sunday算法是从前往后匹配,在匹配失败时关注的是主串中参加匹配的最末位字符的下一位字符。如果该字符没有在模式串中出现则直接跳过,...转载 2018-03-11 21:40:29 · 327 阅读 · 0 评论 -
数据结构与算法系列----Sunday算法详解
转载版权声明: http://blog.youkuaiyun.com/LaoJiu_/article/details/50767615一:背景Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配。其效率在匹配随机的字符串时比其他匹配算法还要更快。Sunday算法的实现可比KMP,BM的实现容易太多。二:分析假设我们有如下字符串:A = "LESSONS TEARNED IN SOF...转载 2018-03-11 21:34:52 · 415 阅读 · 1 评论 -
纯SDK微型DUI窗口小程序,完全编译才7K
当时看到群里面一个朋友在炫,自己忍不住技痒,花了一下午写了一个.// TestUI.cpp : Defines the entry point for the application.//#include "stdafx.h"#include <tchar.h>//-------------------------------------------------------------...原创 2018-03-09 22:29:00 · 536 阅读 · 0 评论 -
从头到尾彻底理解KMP(2014年8月22日版)
很感谢七月老师和阮一峰老师原文地址:http://blog.youkuaiyun.com/v_JULY_v/article/details/7041827目录(?)[-]从头到尾彻底理解KMP引言暴力匹配算法KMP算法1 定义2 步骤3 解释31 寻找最长前缀后缀32 基于最大长度表匹配33 根据最大长度表求next 数组34 通过代码递推计算next 数组35 基于next 数组匹配36 基于最大长度表与基...转载 2018-02-14 18:37:37 · 259 阅读 · 0 评论 -
关于Btree
原文地址: http://blog.51cto.com/thuhak/1261783原创thursdayhawk2013-07-31 20:23:08评论(0)2322人阅读最近无事,研究了一下数据库索引。大部分索引都是采用B+tree,而B+tree又是btree的优化。就先来了解一下Btree。作为一个索引,一般是采用Key-Value的方式来存储内容。Key表示索引的关键字,而Value表...转载 2018-02-10 10:49:18 · 1458 阅读 · 0 评论 -
BTree和B+Tree详解
原文地址: http://blog.youkuaiyun.com/endlu/article/details/51720299B 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。B 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下:树中每个结点最多含有m个孩子(m>=2);转载 2018-02-01 08:56:27 · 380 阅读 · 0 评论 -
b树的实现(2)---java版代码
原文地址: http://blog.youkuaiyun.com/cdnight/article/details/10619599版权声明:本文为博主原创文章,未经博主允许不得转载。[java] view plain copy print?感觉上,b树的插入及删除操作都不如RB树复杂。当年插红黑树的各种操作解释文章都不下几十篇了,数据结构及算法的调试正确运行转载 2017-12-27 08:59:58 · 529 阅读 · 0 评论 -
伸展树(Splay tree)图解与实现
原文地址: https://blog.youkuaiyun.com/u014634338/article/details/495866892015年11月02日 16:20:48阅读数:6738一、伸展树 本文介绍了二叉查找树的一种改进数据结构–伸展树(Splay Tree)。它的主要特点是不会保证树一直是平衡的,但各种操作的平摊时间复杂度是O(log n),因而,从平摊复杂度上看,二叉查找树也是一种平衡二叉...转载 2018-07-16 08:01:14 · 512 阅读 · 0 评论 -
[通俗易懂]深入理解TCP协议(下):RTT、滑动窗口、拥塞处理
原文地址: http://www.52im.net/thread-515-1-1.htmlJackJiang Lv.9 2 年前 | |只看大图 前言 此文为系列文章的下篇,如果你对TCP不熟悉的话,请先看看上篇《[通俗易懂]深入理解TCP协议(上):理论基础》 。 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在...转载 2018-10-13 17:27:42 · 442 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
从B树、B+树、B*树谈到R 树2011年06月07日 17:52:00v_JULY_v阅读数 571411从B 树、B+ 树、B* 树谈到R 树作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统...转载 2019-08-06 21:49:47 · 196 阅读 · 0 评论 -
B树与B+树
B树是为实现高效的磁盘存取而设计的多叉平衡搜索树。这个概念在文件系统,数据库系统中非常重要。当然,有关于B树的产生,发展,结构等等方面的介绍已经非常详细,所以本文只是介绍有关于B树和B+树最核心的知识点,也算是我本人的学习笔记。至于详细的资料,因为毕竟有着太多,所以不再赘述。可以向大家推荐一篇博客:从B树、B+树、B*树谈到R 树,这篇文章中,作者对于B树系列数据结构的讲解非常详细,我的这篇博客,...转载 2019-08-06 17:49:13 · 308 阅读 · 0 评论 -
几种开源TCPIP协议概述--LwIP,uIP,TinyTcp和uC/IP
原文地址:已缺失1、BSD TCP/IP协议栈BSD栈历史上是商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的点。...转载 2019-05-23 20:57:35 · 1040 阅读 · 0 评论 -
复合文档格式研究之07-破解VBA
李懿Excel学习2016-07-05微信扫一扫关注该公众号7、破解VBA终于还是走到这一步了,再学了之前那么多烧脑的理论知识后,接下去继续烧脑。不过如果能将之前的内容全部都理解的话,到这里已经几乎没有什么难度了,唯一剩下的只有一点补充知识了。为了测试效果,本章我们使用了一个加密的Excel文件,其代码部分如下:图30VBA测试文件代码如果你够勤快...转载 2019-05-16 15:11:01 · 1122 阅读 · 0 评论 -
复合文档格式研究之06-读取Directory
李懿Excel学习2016-07-05微信扫一扫关注该公众号6、读取Directory终于离破解只剩2步了,我们先来看倒数第二步。6.1 Directory EntryDirectory Entry是一个记录了复合文档中的所有内容的目录。它的数据结构是一个红黑树,我们不必管这是个啥玩意儿,反正在这篇教程中也用不着。Directory Entry的长度为128个字节,它...转载 2019-05-16 15:08:21 · 952 阅读 · 0 评论 -
复合文档格式研究之05-DIFAT、FAT、MINIFAT
李懿Excel学习2016-07-05微信扫一扫关注该公众号需要之前的文章,请在公众号内回复:复合文档5、读取DIFAT,FAT,MINIFAT上一次,我们成功读取了文件头Header。这一次,我们要根据Header中的信息读取DIFAT,FAT和MINIFAT。这三个信息至关重要,它直接关系到我们数据真正的存储顺序。在那之前,先来复习并扩展一下这些基本的概念。...转载 2019-05-16 15:00:04 · 881 阅读 · 0 评论 -
复合文档格式研究之04 -Header的读取
李懿Excel学习2016-07-05微信扫一扫关注该公众号复合文档解析实践—Header的读取4.1 Header结构分析在微软的MS-CFB官方文档第16页中,复合文档文件头(Header)占用512个字节,其结构如下:图19复合文档文件头结构Header Signature (8 bytes):区别文件类型的文件头,固定为D0...转载 2019-05-16 14:54:59 · 866 阅读 · 0 评论 -
复合文档格式研究之03-用VBA读取文件
李懿Excel学习2016-07-05微信扫一扫关注该公众号复合文档的解析基础终于要开始写程序了,不过在正式解析Excel文件之前,我们先来学习一点预备知识。3.1自定义数据类型在VBA中,有一个自定义的数据类型,在其内部可以包含几个不同的类型的数据。其声明的语法如下:[Private|Public]Typevarnameelemen...转载 2019-05-16 11:42:24 · 1238 阅读 · 0 评论 -
复合文档格式研究之02-复合文档的主要构成
李懿Excel学习2016-07-05微信扫一扫关注该公众号复合文档的组成部分之前介绍了一些计算机关于存储的基础知识(回复:复合文档01可以查看),如果不是太了解,问题也不是很大。但是需要有一个概念,就是数据在计算机中并非顺序存储,要获取一段完整的数据,需要有一个索引表(也就是分区表FAT)将各个零散的数据串起来。本章的内容,在大多数搜索到的文档或者个人博客...转载 2019-05-16 10:03:50 · 1127 阅读 · 0 评论 -
复合文档格式研究之01-数据存储简介
李懿Excel学习2016-07-05微信扫一扫关注该公众号前言去年,我在某论坛看到有大牛破解VBA项目工程的帖子,却没有公布任何技术细节。对于好奇心天生就强的我当然要追根问底,于是在微软的官方网站下载了许多技术文档研究,也参考了许多人写的博客,结合自己的实践,理解了复合文档格式。其实,对于一个完全没有接触过复合文档格式的人来说,即使你找到了网上各个现成的资料,恐怕仍然很...转载 2019-05-16 09:52:26 · 1440 阅读 · 0 评论 -
n元钱,2元钱买1瓶酒,2个空瓶换1瓶酒,4个瓶盖换1瓶酒,一共可以喝多少瓶酒?
原文地址: https://www.douban.com/note/690615996/ kris 2018-09-19 19:03:54不存在借瓶或者盖子哈!纯数学算,python代码如下:money = 100bottals = money/2drink_bottal = bottalstops = bottals def recur(drink_b...转载 2018-10-09 21:30:02 · 739 阅读 · 0 评论 -
[通俗易懂]深入理解TCP协议(上):理论基础
原文地址: http://www.52im.net/thread-513-1-1.html JackJiang Lv.9 2 年前 | |只看大图 前言 TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richa...转载 2018-10-13 17:34:28 · 273 阅读 · 0 评论 -
NTFS文件系统详解
原文地址:http://blog.youkuaiyun.com/enjoy5512/article/details/50935972注:本文参考博客地址NTFS (New Technology File System),是 WindowsNT 环境的文件系统。新技术文件系统是Windows NT家族(如,Windows 2000、Windows XP、Windows Vista、W转载 2017-11-24 21:55:49 · 2143 阅读 · 1 评论 -
NTFS文件系统详解(一)之硬盘基本信息
原文地址: http://blog.youkuaiyun.com/enjoy5512/article/details/50954180本文参考自博客一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标、型号、序列号、生产日期、容量、参数和主从设置方法等。这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义。硬盘主要由盘体、控制电路板和接口部件等组成,如图1-1转载 2017-11-24 21:33:39 · 1276 阅读 · 0 评论 -
浅谈算法和数据结构: 一 栈和队列
原文地址: http://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因。另外普林斯顿大学在Course转载 2016-12-14 14:21:25 · 362 阅读 · 0 评论 -
Redy语法分析--比较运算符(> >= < <= != == )
原文地址: http://blog.chinaunix.net/uid-26750235-id-3147733.html比较运算符(= > )(compare operator)(一)比较运算符比较运算符属于二元运算符,有6种:= >。他们之间的优先级为:比较运算符优先级转载 2016-12-03 15:05:33 · 543 阅读 · 0 评论 -
Redy语法分析--位运算符(<< >> & ^ | )
原文地址: http://blog.chinaunix.net/uid-26750235-id-3147561.html位运算符( > & ^ | )(bitwise operator)(一)位运算符位运算符属于二元运算符,有这么5种:> & ^ | 。他们之间的优先级关系为:运算符优先转载 2016-12-03 15:04:23 · 475 阅读 · 0 评论 -
Redy语法分析--算术运算符(* /. % + - )
原文地址: http://blog.chinaunix.net/uid-26750235-id-3147507.html算术运算符(* / % + -)(arithmetic operator)(一)算术运算符算术运算符总共有5种:* / % + - 。他们之间优先级关系为:算术运算符优先级转载 2016-12-03 15:03:22 · 650 阅读 · 0 评论 -
让语法树跑起来--开篇(1)
原文地址: http://blog.chinaunix.net/uid-26750235-id-3146005.html让语法树跑起来--开篇(1)(一)简介在前面几章中,讲了很多关于抽象语法树的知识,有文字常量节点,一元运算符节点,语句与复合语句节点。但这些都还只是停留在设计层次,不能真正看到实实在在的效果。在这一章中,会看到一个真正能运算,但功能极弱的Red转载 2016-12-03 15:02:10 · 1506 阅读 · 0 评论 -
Redy语法分析--一元运算符(+ - ~)
原文地址: http://blog.chinaunix.net/uid-26750235-id-3145352.html一元运算符(+ - ~ )(unary operator(+ - ~))(一)一元运算符一元运算符是只有一个操作数的运算符,在Redy中有:'+' , '-' , '~' 这么三种,它们的运算优先级相等,结合方向为自右到左。当这三个转载 2016-12-03 15:00:33 · 682 阅读 · 0 评论 -
Redy语法分析--语句与复合语句结点
原文地址: http://blog.chinaunix.net/uid-26750235-id-3144004.html语句与复合语句结点(sentence and complex sentence node)(一)实例说明在介绍语句结点之前,先来看一段小的,不完全的c代码。代码1.1int main(){转载 2016-12-03 15:00:01 · 735 阅读 · 0 评论 -
Redy语法分析--文字常量结点
原文地址: http://blog.chinaunix.net/uid-26750235-id-3142980.html文字常量结点(literal constant)(一)文字常量结点在一门语言里面文字常量是基础,Redy里面文字常量有整数,长整数,浮点数,字符串,布尔值。文字常量可以在源程序中显于的使用,例如表达示1+2.3中有两个文字常量,1是转载 2016-12-03 14:58:49 · 427 阅读 · 0 评论