数据结构与算法
shanzhizi
这个作者很懒,什么都没留下…
展开
-
hash算法简单介绍
来自:http://www.hackbase.com/tech/2009-06-15/53259.htmlHash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值转载 2012-06-26 14:10:11 · 1046 阅读 · 0 评论 -
将两个整形数组排序后合并成一个数组
将两个整形数组排序后合并成一个数组,数组排序采用快速排序法,快速法定义了三个参数,(数组首地址*a,要排序数组起始元素下标i,要排序数组结束元素下标j). 它首先选一个数组元素(一般为a[(i+j)/2],即中间元素)作为参照,把比它小的元素放到它的左边,比它大的放在右边。然后运用递归,在将它左,右两个子数组排序,最后完成整个数组的排序。#include #include #inclu原创 2013-05-23 15:22:40 · 5613 阅读 · 0 评论 -
linux内核数据结构---hash表
关于linux内核链表请参考“linux内核数据结构---链表”。链表虽然是最常见的数据结构,但实际使用中,由于链表的检索能力较差,更多的是作为队列和栈结构使用,如果需要查询,比如通过pid查找进程,通过描述符查找inode,就需要用到检索更快的数据结构——Hash表。先来看Hash节点的定义:struct hlist_head { struct hlist_node *firs转载 2013-05-23 08:51:43 · 5616 阅读 · 1 评论 -
linux内核数据结构---链表(1)
Linux内核有一些基本的数据结构,这些数据结构是Linux实现的基础,对于链表相信大家都不陌生,但是Linux内核中的链表与平常平常我们所使用的链表略有不同,第一次遇到或许会感到困惑。先来看一个链表的节点,对于一个节点,分为两部分,一部分是数据,另一部分是串联数据的指针。Linux链表节点的定义如下(以下代码皆为3.5版本):// include/linux/types.hstru转载 2013-05-23 08:33:18 · 1513 阅读 · 0 评论 -
QE背后的秘密-----可怕的秘密
文章转载自:http://www.caogen.com/blog/Infor_detail.aspx?ID=118&articleId=42178笔者按:此文正式发表于香港《信报财经月刊》第428卷。QE背后的秘密,就是美联储的秘密,也是人民银行的秘密。 笔者十八年前曾访问过美联储(Federal Reserve System,简称Fed)。笔者当时最大的疑问在于“储转载 2012-11-02 13:02:00 · 3579 阅读 · 0 评论 -
经典的字符串hash函数C/java实现
所有内容均来自于:http://www.partow.net/programming/hashfunctions/以下总共给出了10种字符串hash函数,在上面的链接中可以找到各个Hash函数的描述,以及一些其它的关于hash函数的资料下载。这些hash函数各自的优缺点不详。其中,ELFHash函数是在unix系统中被广泛使用的,也是《算法艺术与信息学竞赛》中作者推荐的一个字符串hash函原创 2013-02-18 16:08:57 · 1815 阅读 · 0 评论 -
图结构入门
这篇文章写的很好,刚接触并了解过图结构的朋友可以用心读读。关于数据结构的其他文件请参考:数据结构和算法。图是数据结构里面的重要一章。通过图,我们可以判断两个点之间是不是具有连通性;通过图,我们还可以计算两个点之间的最小距离是多少;通过图,我们还可以根据不同的要求,寻找不同的合适路径。当然,有的时候为了计算的需要,我们还需要从图中抽象出最小生成树,这样在遍历计算的时候就不需要持续判断原创 2012-09-22 15:51:17 · 838 阅读 · 0 评论 -
创建图结构
本文紧接上一篇文章:图结构入门。前面我们讨论过图的基本结构是什么样的。它可以是矩阵类型的、数组类型的,当然也可以使指针类型的。当然,就我个人而言,比较习惯使用的结构还是链表指针类型的。本质上,一幅图就是由很多节点构成的,每一个节点上面有很多的分支,仅此而已。为此,我们又对原来的结构做了小的改变:[cpp] view plaincopy原创 2012-09-22 16:29:29 · 724 阅读 · 0 评论 -
图的基本数据结构和算法
图里面的东西太多,先写一个概要。在后面的文章中将继续逐个探讨和实现。1,一些概念顶点边(无向图) 或 弧(有向图)完全图,子图,连通图路径,简单路径(顶点不重复)生成树(无向图),关键路径,拓扑排序2,存储结构非常重要!!!2种存储方式,邻接矩阵和邻接表目前我写的都是用邻接表写的,但后来发现大家还是用邻接矩阵比较多,后来问了下baidu的阿海,他说一般都是用原创 2012-07-31 15:59:30 · 1366 阅读 · 0 评论 -
无向图的实现(邻接表) 图的遍历
关于邻接表请参考图的基本数据结构与算法。用邻接表实现了一个无向图,在实现时,包含了添加和删除顶点,添加和删除边,size方法(顶点个数),isEmpty方法,广度和深度优先迭代器1,成员变量,构造方法,数组扩展private VNode[] VNodes; //将顶点放在数组中 private int nodeCount; //顶点原创 2012-07-31 16:08:16 · 2324 阅读 · 0 评论 -
时间预算---为什么你总是低估了项目开发周期
一个曾经与我一起工作过的经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后转化下一个时间数量级后,才能得到真正的值。1天转化成3.14周。他过去因为程序员不擅长估算时间而吃尽了苦头。我创建了一个用来翻译程序员时间估算的表格,来尽量缩小估算错误。时间估算是困难的。每一个程序员都有一个现实的估计区间。低于这个区间的估计意味着(构件,测试,检查代码的)时间开销被低估了转载 2012-08-07 12:46:33 · 2001 阅读 · 0 评论 -
暴雪公司关于字符串匹配的hash算法
暴雪公司有个经典的字符串的hash公式 先提一个简单的问题,假如有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做? 有一个方法最简单,老老实实从头查到尾,一个一个比较,直到找到为止,我想只要学过程序设计的人都能把这样一个程序作出来,但要是有程序员把这样的程序交给用户,我只能用无语来评价,或许它真的能工作,但...也只能如此了。原创 2012-07-11 14:54:51 · 13587 阅读 · 6 评论 -
一百万以内的素数表
http://blog.csdn.net/wwwsq/article/details/7383674编译出来就可以算100w以内的素数,并保存在文件中#include #include #include #define PRIME_SIZE 100000int main(void){ int i,j=0,k; i转载 2012-06-30 16:42:33 · 4051 阅读 · 0 评论 -
一种类似和谐系统的字符串匹配算法
实现一个挺高级的字符匹配算法:给一串很长字符串,要求找到符合要求的字符串,例如目的串:1231******3***2 ,12*****3 这些都要找出来其实就是类似一些和谐系统。。。。。这题的真正意思就是,给你一个目标串,如“123”,只要一个字符串里面同时包含1、2和3,那么这个字符串就匹配了。系统越和谐,说明错杀的可能行也就越大。加入目标串的长度为m,模式串的长度为n,我们转载 2012-07-11 14:11:28 · 1768 阅读 · 0 评论 -
哈希表的简单介绍
数据结构:hash_map原理 来自:http://blog.csdn.net/wqf363/article/details/1527145hash_map基于hash table(哈希表)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容转载 2012-06-26 08:40:38 · 1071 阅读 · 0 评论 -
大牛的技能
来自:http://www.hackbase.com/tech/2009-06-15/53260.html1、黑客的精神态度是很重要的,但技术则更是重要。黑客的态度虽然是无可取代,随著新科技的发明和旧技术的取代,这些工具随时间在慢慢的改变。例如:以往总是会学会用机器码写程序,直到最近我们开始使用HTML。不过,在1996年末,当然,这是基础的hacking技能。在1997年,理所当然的,你必须转载 2012-06-26 14:46:09 · 2438 阅读 · 0 评论 -
分享一个MD5加密java工具类
一直都有分享这个工具类的想法,只是碍于没有时间整理,所以一直没有把代码贴出来。这是一个个人认为非常好用的使用MD5+salt加密的工具类,一部分代码由网上搜索而得,一部分自己修改添加之后而得。使用这个工具类,非常简单,从前台拿到密码passwd,直接HexUtil.getEncryptedPwd(passwd)就可以返回一个长度为56的字符串,可以用来保存到数据库中,相反,登录转载 2013-08-14 22:22:44 · 2222 阅读 · 0 评论