![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
origin_lee
这个作者很懒,什么都没留下…
展开
-
C++ STL中哈希表 hash_map介绍
0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信转载 2014-09-24 12:15:23 · 466 阅读 · 0 评论 -
儒略历日算法
儒略日数(简称儒略日)儒略日数是指从公元 -4712 年开始连续计算日数得出的天数及不满一日的小数,通常记为 JD (**)。传统上儒略日的计数是从格林尼治平午,即世界时12点开始的。若以力学时(或历书时)为标尺,这种计数通常表达为“儒略历书日”,即JDE (**),其中E只是一种表征,即按每天86400个标准秒长严格地计日。例如:1977年4月26.4日 UT = JD 2443 259转载 2014-12-21 15:50:25 · 8490 阅读 · 1 评论 -
桶排序
从《基于比较的排序结构总结 》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设 ,来避免绝大多数的“比较”操作。桶排序就是这样的原理。 桶排序的基本思想 假设有一组长度为N的待排关键字序列K[1..转载 2015-01-07 12:32:01 · 392 阅读 · 0 评论 -
几种排序算法复杂度的比较
几种排序算法的比较:排序方法平均情况最好情况最坏情况辅助空间稳定性直接插入O(n^2)O(n)O(n^2)O(1)是希尔O(nlogn)~O(n^2)O(n^1.3)转载 2014-10-21 20:24:40 · 488 阅读 · 0 评论 -
红黑树
http://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91转载 2014-10-31 20:39:53 · 460 阅读 · 0 评论 -
数据结构之二叉树(遍历、建立、深度)
1、二叉树的深度遍历 二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树的所有结点,使得每个结点被访问一次且仅被访问一次。 对于二叉树的深度遍历,有前序遍历二叉树、中序遍历二叉树、后序遍历二叉树三种形式,下面分别进行学习和介绍。1.1 二叉树的前序遍历 1)前序递归遍历 规则是若转载 2014-10-14 13:11:38 · 371 阅读 · 0 评论 -
从头到尾彻底理解KMP
作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱,如此,留言也是“骂声”一片。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文。转载 2014-10-11 12:41:17 · 449 阅读 · 0 评论 -
打造最快hash算法
暴雪公司有个经典的字符串的hash公式 先提一个简单的问题,假如有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做? 有一个方法最简单,老老实实从头查到尾,一个一个比较,直到找到为止,我想只要学过程序设计的人都能把这样一个程序作出来,但要是有程序员把这样的程序交给用户,我只能用无语来评价,或许它真的能工作,但也只能如此了。转载 2014-10-28 20:23:38 · 771 阅读 · 0 评论 -
贪心算法介绍
贪心算法思想:顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。贪心算法转载 2014-10-28 15:02:31 · 479 阅读 · 0 评论 -
time33 hash算法
php, apache, perl, bsddb都使用time33哈希.最简单的版本 uint32_t time33(char const *str, int len) { unsigned long hash = 0; for (int i = 0; i hash = hash *33 +转载 2014-10-29 10:00:49 · 570 阅读 · 0 评论 -
Hash表
Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。1.Hash表的设计思想 对于一般的线性表,比如链表,如果要存转载 2014-09-24 12:00:52 · 343 阅读 · 0 评论 -
跳表SkipList的原理和实现
最近看了一种数据结构叫做skipList,redis和levelDB都是用了它。Skip List是在有序链表的基础上进行了扩展,解决了有序链表结构查找特定值困难的问题,查找特定值的时间复杂度为O(logn),他是一种可以代替平衡树的数据结构。 下面是skipList的一个介绍,转载来的,源地址:http://kenby.iteye.com/blog/1187303,为防止源地址丢失转载 2015-04-17 09:43:17 · 922 阅读 · 0 评论