
算法与数据结构
文章平均质量分 83
jfcat
做有趣的事情,使自己更快乐!
展开
-
(转)一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性has转载 2021-08-25 19:39:35 · 107 阅读 · 0 评论 -
(转)红包随机算法&微信群红包随机算法
通过这篇文章算是把微信群红包的算法弄明白了1.前言因疫情影响,部门 2021 年会以线上直播的形式进行,通过微信小程序展开。为活跃年会氛围,年会直播间会有抢红包环节。因产品要求,红包金额要随机生成,所以这里涉及到指定红包总额、数量和最大最小值情况下如何生成红包金额。可以看出,红包随机金额生成的输入是一个四元组 <sum, num, min, max>,其中 sum 是红包总额,num 是红包数量,min 和 max 分别是红包最小最大值。所以这里可以抽象成如下算法:input:转载 2021-07-16 20:58:11 · 4948 阅读 · 0 评论 -
C++实现排列组合
很多地方都遇过排列组合,比如计算问题的规模,数据的大小,占用磁盘空间多少等。原理部分借鉴网上一篇文章,道理已经说的很清楚就不重复了。(1) 全排列:全排列表示把集合中元素的所有按照一定的顺序排列起来,使用P(n, n) = n!表示n个元素全排列的个数。例如:{1, 2, 3}的全排列为:123;132;213;231;312;321;共6个,即原创 2013-04-10 23:18:56 · 23634 阅读 · 1 评论 -
编程珠玑第二章的算法实现
我这里由于是对程序算法的实现,没有弄这么大的数据量(40亿的32位整数对于文本文件来说估计要3G以上的存储空间),我这里只使用4千万的数据量,也就是百分之一的量,不多说直接上代码。#include #include #include #include #include #define GETBIT(NUM, IDX) ((NUM>>(IDX))&1)#define INI原创 2012-11-26 20:34:41 · 725 阅读 · 0 评论 -
快速排序--C语言
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的转载 2012-10-28 19:42:38 · 911 阅读 · 4 评论 -
使用qsort进行快速排序
#include #include static int compare(const void *p1, const void *p2){ if (*(int *)p1 > *(int *)p2) return 1; else if (*(int *)p1 < *(int *)p2) return -1; else原创 2012-10-27 15:36:05 · 634 阅读 · 0 评论 -
插入排序算法C语言实现
#include #include //插入排序voidmain(){ int a[]={0,2,3,7,5,2,9,3,1,98,29}; int t; for(int i=1;i<sizeof(a)/sizeof(*a);i++) { //将赋值移除内循环进行加速 t = a[i]; int j;原创 2012-10-27 16:14:13 · 1420 阅读 · 0 评论 -
归并排序算法C++的实现
#include using namespace std;void merge(int a[], int first, int mid, int last, int c[]){ int i = first,j = mid + 1; int m = mid, n = last; // k 的值与 i的值必须相等,要不无法把c的值回写给a int k = fi原创 2012-10-27 13:23:33 · 723 阅读 · 0 评论 -
编程珠玑第1章的算法实现
断断续续看了几天,在实现几个算法后,总算把这个代码写出来了,测试耗时在10s 算法真强大:)#include #include #include #include #define MAX 1024*1024*1024typedef unsigned char BYTE;/*enum bool {1,0};*/int main(){ char str[10]原创 2012-10-31 23:23:41 · 727 阅读 · 0 评论