梦想破碎是没有声音的,它只是缓慢又沉默地离开了。 by 苏更生

 分类:算法导论

If you want to become a good programmer, you can spend 10 years programming, or spend 2 years programming and learning algorithms.

哈希表

基本概念   哈希表(Hash Table)是一种根据关键字直接访问内存存储位置的数据结构。通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数(如图)。 哈希函数构造方法   哈希表的构造方法是:假设要存储的数据元素个数为...

Jay13 3年前 (2014-07-04) 7459℃ 0评论 7喜欢

基于用户投票的排名算法(六):贝叶斯平均

上一篇介绍了“威尔逊区间”,它解决了投票人数过少、导致结果不可信的问题。   举例来说,如果只有 2 个人投票,”威尔逊区间”的下限值会将赞成票的比例大幅拉低。这样做固然保证了排名的可信性,但也带来了另一个问题:排行榜前列总是那些票...

Jay13 3年前 (2014-06-19) 2872℃ 0评论 3喜欢

基于用户投票的排名算法(四):牛顿冷却定律

这个系列的前三篇,介绍了 Hacker News,Reddit 和 Stack Overflow 的排名算法。   今天,讨论一个更一般的数学模型。   这个系列的每篇文章,都是可以分开读的。但是,为了保证所有人都在同一页上,我再说一下,到目前为止,我们用不同方法,企图解决的都是...

Jay13 3年前 (2014-06-19) 3465℃ 0评论 3喜欢

基于用户投票的排名算法(三):Stack Overflow

Reddit 排名算法的特点是,用户可以投赞成票,也可以投反对票。也就是说,除了时间因素以外,只要考虑两个变量就够了。   但是,还有一些特定用途的网站,必须考虑更多的因素。世界排名第一的程序员问答社区 Stack Overflow,就是这样一个网站。   你在上面提出各种关于...

Jay13 3年前 (2014-06-19) 3070℃ 1评论 5喜欢

基于用户投票的排名算法(二):Reddit

Hacker News 排名算法的特点是用户只能投赞成票,但是很多网站还允许用户投反对票。就是说,除了好评以外,你还可以给某篇文章差评。   Reddit 是美国最大的网上社区,它的每个帖子前面都有向上和向下的箭头,分别表示”赞成”和”反对&...

Jay13 3年前 (2014-06-19) 2794℃ 0评论 7喜欢

基于用户投票的排名算法(一):Delicious和Hacker News

互联网的出现,意味着”信息大爆炸”。   用户担心的,不再是信息太少,而是信息太多。如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。   各种各样的排名算法,是目前过滤信息的主要手段之一。对信息进行排名,意味着将信息按照重要性依...

Jay13 3年前 (2014-06-19) 3044℃ 0评论 8喜欢

必懂KMP算法

很久以前,我一直以来的印象是KMP字符串匹配算法很麻烦,很难懂。直到这篇文章的出现。 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDAB...

Jay13 3年前 (2014-06-18) 5432℃ 5评论 19喜欢

动态规划

动态规划
动态规划通过将原问题分解为子问题,然后通过求解子问题,并组合子问题的解而得到整个问题的解。通常动态规划求解的问题特别适用于具有重复子问题的问题。通过将子问题的解保持在一张表中,避免每次遇到各个子问题时重复计算,从而大大提高计算效率(也是一种典型的空间换时间)。 通过动态规划求解问...

Jay13 3年前 (2014-05-26) 3571℃ 1评论 13喜欢

归并排序

归并排序用到了分治策略。 用分治策略解决问题分为三步:分解、解决、合并。也即:将原问题划分成n个规模较小而结构与原问题相似的子问题; 递归地解决这些子问题,然后再合并其结果,得到原问题的解。此处n=2 归并排序的伪代码(来自算法导论) 合并排序伪代...

熊 大 3年前 (2014-05-13) 9886℃ 8评论 12喜欢

插入排序

插入排序:一种原地排序算法,空间复杂度O(1),时间复杂度为O(n*n) 来自算法导论的算法伪代码: insert_sort(A): for j <—— 1 to length[A]-1 do key <——...

熊 大 3年前 (2014-05-13) 2241℃ 0评论 5喜欢

有队列的地方,就有栈。上一篇讲了队列及其实现。本篇讲述如何实现一个栈。给出了栈实现的伪代码和一个具体的实现,并给出了一个简单测试程序。 本文的栈用数组实现。在给出伪代码和具体实现之前,我们需要确定好栈的接口,即我们的栈具体提供什么操作。 我们的栈提供的操作如下,其中STACK_E...

熊 大 3年前 (2014-05-12) 2753℃ 0评论 8喜欢

队列

本文讲述如何实现一个循环队列。给出了循环队列的伪代码和一个具体的实现,并给出了一个简单测试程序。 队列:先入先出 栈:先入后出 队列可以用数组实现,也可以用链表实现。但是,在大多数的实际应用中,我们都是实用数组来实现队列。因此,本文也是给出了一个用数组来实现的循环队列。 队列最核...

熊 大 3年前 (2014-05-12) 2521℃ 0评论 6喜欢

动态数组的实现

从本文你能学到: 1.C++编写一个类 2.编写C++类模板 3.C++操作法重载 4.如何实现动态数组 5.学习标准库程序的编码风格 一个最简单的类模板 template <class T> class Test{ privat...

熊 大 3年前 (2014-05-12) 3590℃ 1评论 7喜欢

Linux内核链表实现

一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主...

熊 大 3年前 (2014-05-12) 2144℃ 0评论 0喜欢

双向链表实现

双向链表有各种各样的实现,提供的接口也各不相同,本文的双向链表提供最基本的操作接口。 1.创建链表 list_init() 2.销毁链表 list_finit(L) 3.查找元素 list_search(L,k) 4.插入元素 list_insert(L,x) 5.删除元素 li...

熊 大 3年前 (2014-05-12) 3593℃ 1评论 1喜欢

“不给力啊,老湿!”:RSA加密与破解

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 加密和解密是自古就有技术了。经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫无意义的数字苦恼,忽然灵光一闪,翻出一本厚书,将第一个数字对应页码数,第二个数字...

googler 3年前 (2014-05-08) 4556℃ 4评论 1喜欢