无界

我是Oracle Java JCP会员 博客域名 https://linuxstyle.blog.csdn.net/

排序:
默认
按更新时间
按访问量
RSS订阅

经典算法书籍推荐以及算法书排行【算法四库全书】

经典算法书籍推荐以及算法书排行【算法四库全书】 作者:无界编程 https://linuxstyle.blog.csdn.net/ https://blog.csdn.net/21aspnet 行文方式:类似《四库全书》截取经典算法书目录和精华篇章 版权说明:本文于2019年5月5日首发于C...

2019-05-05 20:14:35

阅读数 3978

评论数 7

Linux内核的红黑树源码实现以及调用

红黑树可以说是程序员经常遇到的一种数据结构,不管是工作还是面试都会涉及,有时候还会让你写一段红黑树代码。 本文主要是讲Linux中的红黑树,关于红黑树定义参考wiki:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree 其中《算法导论》中的...

2019-04-28 19:33:02

阅读数 1534

评论数 4

为什么Java8中HashMap链表使用红黑树而不是AVL树

在Jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。 那么很多人就有疑问为什么是使用红黑树而不是AVL树,AVL树是完全平衡二叉树阿? 最主要的一点是: 在CurrentHashMap中是加锁了的,实际上是读写锁,如果写冲...

2019-04-01 01:51:46

阅读数 2496

评论数 2

Redis源码和java jdk源码中hashcode的不同实现

一.redis实际上是使用了siphash 这个比较简单,我说的简单是指redis代码比较少不像jdk一样调用C++代码调用栈非常深。 先看这个rehashing.c 主要就是dictKeyHash函数,需要调用dict.h头文件中定义的dictGenHashFunction #incl...

2019-03-22 19:49:26

阅读数 384

评论数 0

算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 相...

2019-02-25 14:58:49

阅读数 141

评论数 0

深入浅出理解Paxos算法

Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的「La」)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。Paxos算法一开始非常难以理解,但是一旦理解其实也并不难,之所以难理解其实是因为作者讲的故事难理解。Paxos算法维基百科https://...

2016-02-19 20:09:40

阅读数 23492

评论数 3

红黑树

1. 简介红黑树是一种自平衡二叉查找树。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对...

2012-11-28 16:08:30

阅读数 11043

评论数 3

一笔画问题【数据结构-图论】

回家路上听到2个人在说:田字怎么一笔写成,并且笔划不重复。田我回家想了许久,觉得无论如何走正常的途径肯定是不行的,投机取巧脑筋急转弯的我不讨论。那么是否可以找到数学定理?其实就是欧拉七桥问题:18世纪著名古典数学问题之一。在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来(如图...

2012-11-28 15:11:10

阅读数 13429

评论数 0

海量数据处理

1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取,然...

2012-03-23 10:00:18

阅读数 3685

评论数 2

用递归法计算斐波那契数列的第n项

斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波...

2012-03-12 14:56:23

阅读数 28449

评论数 2

JavaScript 中的有限状态机

http://www.ibm.com/developerworks/cn/web/wa-finitemach/ JavaScript 中的有限状态机Page navigation系列文章有限状态机很早就已用作设计和实现事件驱动的程序(比如网络适配器和编译器)内复杂行为的组织原则。现在,可编程的 W...

2012-02-20 16:13:33

阅读数 2915

评论数 1

Bruce Schneier 和他的密码学以及网络安全经典著作推荐

经典语录--数学是完美的,而现实却是主观的。数学是精确的,而计算机却充满矛盾。数学是遵循逻辑的,而人却是不稳定的、反复无常的,甚至是难以理解的。 密码学是数学的一个分支。像所有其他数学分支一样,它涉及的是数字、公式和逻辑。安全性,特别是在我们的生活中十分有用的安全性,它涉及的是人:人所知道的事情、...

2012-02-10 10:58:27

阅读数 4226

评论数 0

不畏浮云遮望眼--离散数学和组合数学

不畏浮云遮望眼,基础很重要! 离散数学是算法和数据结构的基础,而算法和数据结构又是什么的基础?不解释了。 1.《离散数学及其应用》作者: (美)Kenneth H. R出版社: 机械工业出版社出版年: 2007-6页数: 804定价: 79.00元丛书: 计算机科学丛书ISBN: 97871112...

2011-12-28 16:44:18

阅读数 3263

评论数 0

希尔排序

希尔排序(shell)是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了.#include ; ...

2007-03-20 01:10:00

阅读数 7379

评论数 4

插入排序

插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止.算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是1 ...

2007-03-24 12:49:00

阅读数 6596

评论数 2

选择排序

选择排序算法思想:第一次:选第2个数和第一个比较并把小的放左边,继续比较第3个和第一个,这样一圈下来最小的到第一位;第二次:选第3个数和第二个数比较如此直到最后一个数。  C语言版#include ; void Selectsort(int A[],int n) { int i,...

2012-01-17 18:33:07

阅读数 2161

评论数 1

冒泡排序

冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最前面,然后再对剩下的序列从父前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.因此,复杂度在最坏的情况下是O(N ^ 2).void Swap( int * a, in...

2007-03-19 19:27:00

阅读数 4945

评论数 1

维基百科上的算法和数据结构链接很强大

突然发现维基百科上的算法和数据结构比百度百科强多啦,图文并茂。其实这个网站不错:http://www.sorting-algorithms.com冒泡排序:bubble冒泡的意思http://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%...

2012-01-13 18:32:19

阅读数 5161

评论数 0

NP问题

NP问题http://baike.baidu.com/view/158424.htmP(Polynomial,多项式)问题.P问题是可以在多项式时间内被确定机(通常意义的计算机)解决的问题.NP(Non-Deterministic Polynomial, 非确定多项式)问题,是指可以在多项式时间内...

2012-01-04 17:17:56

阅读数 4468

评论数 0

已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。

已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。  答案:int max(int a,int b){return (a+b+abs(a-b))/2;}  类似的 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句答案:#define MA...

2007-03-24 16:42:00

阅读数 5765

评论数 3

提示
确定要删除当前文章?
取消 删除