漫谈非加密哈希算法(MurMurHash,CRC32,FNV,SipHash,xxHash)

HASH算法介绍 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从...

标签: 算法
发表于:2021-11-22 / 阅读(6280) / 评论(0) 分类 经典算法
单向链表翻转

struct linka { int data; linka next; }; void reverse(linka& head) { if(head ==NULL) return; linka pre, cur, *ne; pre=head; cur=head->next; whil...

标签: 算法
发表于:2013-3-10 / 阅读(2065) / 评论(0) 分类 经典算法
从10亿查询词找出出现频率最高的10个

1. 问题描述在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案针对top k类问题,通常...

发表于:2012-5-24 / 阅读(1585) / 评论(0) 分类 经典算法
编程珠玑 -IT经典图书

《编程珠玑》第1版是对我职业生涯早期影响最大的书之一,其中的许多真知灼见多年之后仍然使我受益匪浅。Jon在第2版中对素材进行了大量更新,许多新内容让我耳目一新。

发表于:2012-3-3 / 阅读(1794) / 评论(0) 分类 图书推荐
缓存中的算法-RAND算法,FIFO算法,LFU算法,LRU算法,OPT算法

在段式虚拟存储器中,虚存空间中能容纳的程序段数要比主存空间中能存放的相同长度的程序段数多得多。因此,必然会出现当主存中所有页面都已经被占用,或者所有主存空间都已经被占用,而又要从磁盘存储器中调入新页的情况。这时,必须从主存储器中淘汰掉一个不常用的页面,以便腾出主存空间来存放新调入的页面。下面介绍几种...

发表于:2011-2-20 / 阅读(2939) / 评论(0) 分类 经典算法
约瑟夫环 php实现

一群猴子排成一圈,按1,2,...,n依次编号。 然后从第1只开始数,数到第m只,把它踢出圈, 从它后面再开始数, 再数到第m只,在把它踢出去..., 如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。 要求编程模拟此过程,输入m...

发表于:2009-10-12 / 阅读(2882) / 评论(0) 分类 经典算法
哈希算法

哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。

发表于:2009-10-10 / 阅读(2068) / 评论(0) 分类 经典算法
二分查找(也叫做折半查找)及PHP实现

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。 【基本思想】 将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果x<a[n/2]...

发表于:2009-10-10 / 阅读(2103) / 评论(0) 分类 经典算法
折半查找

算法思想:   将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。   折半查找是一种高效的查找方法。它可以明显减...

发表于:2009-10-10 / 阅读(1808) / 评论(0) 分类 经典算法