算法
文章平均质量分 90
SurgePing
不要让任何事情成为你不去学习的理由
展开
-
内部排序算法的比较和实现
排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本文介绍常用的如下排序方法的C/C++实现,并对它们进行分析和比较。更详细的算法思想的介绍可以参考这里 /* 冒泡排序 插入排序 二路插入排序 希尔排转载 2013-02-21 18:05:11 · 1178 阅读 · 0 评论 -
B树的非回溯算法与实现
B树的定义假设B树的度为t(t>=2),则B树满足如下要求:(参考算法导论)(1) 每个非根节点至少包含t-1个关键字,t个指向子节点的指针;至多包含2t-1个关键字,2t个指向子女的指针(叶子节点的子女为空)。(2) 节点的所有key按非降序存放,假设节点的关键字分别为K[1], K[2] … K[n], 指向子女的指针分别为P[1], P[2]…P[n+1],其中n为节点关键字转载 2013-09-27 18:30:41 · 1061 阅读 · 0 评论 -
十大编程算法助程序员走上高手之路
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一转载 2014-09-16 10:12:32 · 717 阅读 · 0 评论 -
教你初步了解KMP算法、updated
本文参考:数据结构(c语言版) 李云清等编著、算法导论引言:在文本编辑中,我们经常要在一段文本中某个特定的位置找出 某个特定的字符或模式。由此,便产生了字符串的匹配问题。本文由简单的字符串匹配算法开始,再到KMP算法,由浅入深,教你从头到尾彻底理解KMP算法。来看算法导论一书上关于此字符串问题的定义:假设文本是一个长度为n的数组T[1...n],模式是一个长度为m进一步转载 2013-05-14 13:30:58 · 1318 阅读 · 0 评论 -
CRC32 算法
CRC是什么东西呢?其实我们大家都不应该会对它陌生,回忆一下?你用过RAR和ZIP等压缩软件吗?它们是不是常常会给你一个恼人的“CRC校验错误”信息呢?我想你应该明白了吧,CRC就是块数据的计算值,它的全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”,“CRC校验”就是“循环冗余校验”。CRC有什么用呢?在数据存储和数据通讯领域,为了保证数据的正确,转载 2015-06-04 16:22:46 · 3119 阅读 · 0 评论 -
《算法的乐趣》作者王晓华访谈:多看、多做、多想是秘诀
王晓华是一位热衷于算法研究的程序员,他是CSDN算法专栏的超人气博主( 博客),也是《算法的乐趣》一书的作者。2005年毕业于华中科技大学,目前在中兴通讯上海研发中心从事光纤接入网通讯设备开发,担任EPON(以太网无源光网络)业务软件开发经理,参与开发的PON设备在全球部署过亿线,为数亿家庭提供宽带接入服务。 日前,笔者对王晓华进行了采访,请他分享专研算法的乐趣之道。 王晓华转载 2015-05-26 16:06:30 · 2154 阅读 · 0 评论 -
加密算法比较3DES AES RSA ECC MD5 SHA1等
加 密算法通常分为对称性加密算法和非对称性加密算法,对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行 加解密了。非对称算法与之不同,发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A转载 2015-01-12 17:36:37 · 3825 阅读 · 0 评论 -
MFC下MD5加密算法实现,带key(32位MD5小写)
以下转自:点击打开链接在百度上验证,与网上的32位MD5小写加密相同:点击打开链接但... .简单的可以破解:http://www.cmd5.com/最近在写一个MFC的程序,里面用到MD5加密,上网百度了好一会,后来还是从学长的代码里面扣出来的。以下就做一下简单的介绍和使用:1、首先是.h的头文件。[cpp] view plaincopyprint转载 2015-03-06 11:06:41 · 3531 阅读 · 0 评论 -
B树的C实现
[+] 从B树谈到R树之B树的C实现作者:weedge,July。编程艺术室出品。前言 代码大全的作者Steve McConnell曾称,他所见识的任何一本书都不是某一个人能完全独立即能完成的。吾深以为然。 本blog内的文章十有八九系我个人参考资料原创所作,与此同时十有二转载 2013-09-27 18:17:42 · 3237 阅读 · 0 评论 -
B_树的C实现原理插入、删除、查找的原理
前面讨论的查找都是内查询算法,被查询的数据都在内存。当查询的数据放在外存,用平衡二叉树作磁盘文件的索引组织时,若以结点为内外存交换的单位,则找到需要的关键字之前,平均要进行lgn次磁盘读操作,而磁盘、光盘的读写时间要比随机存取的内存代价大得多。其二,外存的存取是以“页”为单位的,一页的大小通常是1024字节或2048字节。针对上述特点,1972年R.Bayer和E.M.Cright提出了一种B转载 2013-09-27 18:12:31 · 1716 阅读 · 0 评论 -
KMP算法之总结篇(必懂KMP)
作者:July。出处:http://blog.csdn.net/v_JULY_v/。引记 此前一天,一位MS的朋友邀我一起去与他讨论快速排序,红黑树,字典树,B树、后缀树,包括KMP算法,唯独在讲解KMP算法的时候,言语磕磕碰碰,我想,原因有二:1、博客内的东西不常回顾,忘了不少;2、便是我对KMP算法的理解还不够彻底,自不用说讲解自如,运用自如了。所以,特再写本篇文章。由于转载 2013-04-25 18:18:55 · 1657 阅读 · 0 评论 -
快速排序算法所有版本的c/c++实现
前言: 相信,经过本人之前写的前俩篇关于快速排序算法的文章:第一篇、一、快速排序算法,及第二篇、一之续、快速排序算法的深入分析,各位,已经对快速排序算法有了足够的了解与认识。但仅仅停留在对一个算法的认识层次上,显然是不够的,即便你认识的有多透彻与深入。最好是,编程实现它。 而网上,快速排序的各种写法层次不清,缺乏统一、整体的阐述与实现,即,没有个一锤定音,如此,我便打算自己去实转载 2013-04-25 18:20:13 · 1019 阅读 · 0 评论 -
算法的时间复杂度(大O表示法,其中O是个常量)
算法的时间复杂度和空间复杂度都是用大O表示法,来表示的。其中O是个常量。常见的 排序算法的时间复杂度: 冒泡排序、插入排序、希尔排序、选择排序的时间复杂度是O(n^2); 快速排序的时间复杂度是 O(n *原创 2013-09-03 23:35:26 · 10428 阅读 · 0 评论 -
用非递归实现二叉树的前序、中序、后序、层次遍历,用递归实现查找、统计个数、比较、求深度
一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。满二叉树:所有终端都在同一层次,且非终端结点的度数为2。在满二叉树中若其深度为h,则其所包含的结点数必为2^h-1。完全二叉树:除了最大的层次即成为一颗满二叉树且层次最大那层所有的结转载 2013-10-06 17:54:02 · 1217 阅读 · 0 评论 -
单链表、带头结点的单链表、循环单链表 以及其操作实现
一、 链式存储 以结点的形式存储数据。除了存放一个结点的信息外,还需附设指针。 数据在内存中存储是不连续的,每个结点只能也只有它能知道下一个结点的存储位置。 二、单链表 单链表是线性表链式存储的一种,其储存不连续。单链表的数据结构中包含两个变量:数据和指向下一结点的指针。一个结点只知道下一个结点的地址。一个转载 2013-10-06 18:10:04 · 3098 阅读 · 0 评论 -
双链表、链式栈、链式队列 及实现
一、双链表在单链表的基础上再增加一个指向它前驱的指针,就构成了双链表。所以双链表有三个变量:数据信息info、前驱指针llink、后继指针rlink。 二、双链表操作和实现 由于双链表也为单链表的一种变型,一些相似的操作就没一一列举,可以参考数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现 1、数据结构2、在i位置插入结点转载 2013-10-06 17:43:47 · 1441 阅读 · 0 评论 -
字符串匹配算法总结
我想说一句“我日,我讨厌KMP!”。KMP虽然经典,但是理解起来极其复杂,好不容易理解好了,便起码来巨麻烦!老子就是今天图书馆在写了几个小时才勉强写了一个有bug的、效率不高的KMP,特别是计算next数组的部分。其实,比KMP算法速度快的算法大把大把,而且理解起来更简单,为何非要抓住KMP呢?笔试出现字符串模式匹配时直接上sunday算法,既简单又高效,何乐而不为?说实话,想转载 2012-09-24 22:14:39 · 1665 阅读 · 0 评论 -
分析B树的回溯实现方式
回溯的方式实现B树与非回溯算法相比,理解起来更为直观,而且插入时/删除时,需要分裂/合并的次数比非回溯算法要少,因为只有到必须分裂或合并的时候回溯算法才执行分裂或合并。当回溯算法从根向叶子下降后,还要向上回溯至根节点。如使用B树(B+树)组织辅助存储设备上(如磁盘)的数据,则应尽量避免执行节点分裂和合并操作,因为这些操作将增加多次额外的磁盘写操作,会极大的影响性能,本文主要结合代码分析B树的回溯实转载 2013-09-27 18:28:13 · 1077 阅读 · 0 评论 -
Crypto++ 加/解密算法库
编译 Crypto++ cryptlib 适合VC6 VC7 VC8 VC9 VC10Crypto++ Library is a free C++ class library of cryptographic schemes.可以到下面的网址下载最新源代码:http://www.cryptopp.com/ Crypto++ Library 是开源的、跨平台的C++, 提供丰转载 2015-01-12 17:46:15 · 9143 阅读 · 0 评论