精度计算 大数乘大数
本算法是用来计算一个大数(现有的数据类型无法表示的数)乘以一个大数(现有的数据类型无法表示的数)。
算法思路是把大数的每一位都当做一个字符放入一个字符数组中,再把乘数的各个位与被乘数的各个位从最高位依次相乘,将结果存放在一个二维数组res中。例如计算12*12,res[0][0] = 1,res[0][1] = 2,res[...
分类:
其他好文 时间:
2015-05-28 16:20:57
阅读次数:
146
本文简要谈一下串的模式匹配。主要阐述BF算法和KMP算法。力求讲的清楚又简洁。
一 BF算法
核心思想是:对于主串s和模式串t,长度令为len1,len2, 依次遍历主串s,即第一次从位置0开始len2个字符是否与t对应的字符相等,如果完全相等,匹配成功;否则,从下个位置1开始,再次比较从1开始len2个字符是否与t对应的字符相等。。。。
BF算法思路清晰简单,但是每次匹配不成功时都要回...
分类:
编程语言 时间:
2015-05-26 23:30:56
阅读次数:
430
题目:给定N张扑克牌和一个随机函数,设计一个洗牌算法思路:假设数组A存的是扑克牌代表的数字,则洗牌的过程就是数组中元素交换的过程。洗牌是个随机的过程,也是一个排列组合的过程。假设有N张牌,则其排列组合的可能情况为N!=N*(N-1)*....*2*1。有两种的随机洗牌函数:1、A[i]=A[rand...
分类:
编程语言 时间:
2015-05-25 18:13:01
阅读次数:
161
概述
我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择。与常规的hash算法思路不同,只是对我们要存储数据的key进行hash计算,分配到不同节点存储。一致性hash算法是对我们要存储数据的服务器进行hash计算,进而确认每个key的存储位置。
常规hash算法的应用以及其弊端
最常规的方式莫过于hash取模的方式。...
分类:
编程语言 时间:
2015-05-21 17:33:29
阅读次数:
158
精度计算-大数乘小数
本算法是用来计算一个大数(现有的数据类型无法表示的数)乘以一个小数(10以内的数)。
算法思路是把大数的每一位都当做一个字符放入一个字符数组中,再从最后一位开始于要乘的小数相乘并加上前一位的进位,如果有进位存入一个变量中,加到下一位的计算中去。
下面是我的C语言实现过程。int main()
{
char c[100] = "12312312312312312...
分类:
其他好文 时间:
2015-05-21 15:38:46
阅读次数:
150
问题描写叙述: 设有n(n=2^k)支队伍參加循环赛,循环赛共进行n-1天,每支队伍要与其它n-1支队伍比赛一场,且每支队伍每天必须比赛一场,不能轮空。试按此要求为比赛安排日程。算法思路:我们先安排奇数下标位置与偶数下标位置之间的比赛,就有n/2场,方法非常easy,team[2k]=2k,全部奇数...
分类:
其他好文 时间:
2015-05-18 12:47:50
阅读次数:
195
KMP算法一开始学起来要被绕晕,但事实上,只要掌握其中逻辑思路,还是很好学的。我们设主串为S,子串为a现在第一部分两者匹配,也就是说,S串的打钩部分与a串打钩部分是完全一样的,但是,S【i】与a【k】是不相同的。如果按照常规思路,我们只会把a串往后移一个(朴素算法的过程也可以这么理解),但这样时间上...
分类:
编程语言 时间:
2015-05-17 10:45:50
阅读次数:
166
最近算法中学到了Horspool,KMP,BM三种算法。接下来给大家做个分享。Horspool算法:算法思路: 1.分为匹配串,原串 2.从右往左依次匹配: 一旦遇到不匹配的,原串相对于匹配串 移动table[i]个字符 3.table[]由原串每个字符索引到原串每个字符相对...
分类:
编程语言 时间:
2015-05-14 15:37:40
阅读次数:
153
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增的排序的数组的一个旋转,输出旋转数组的最小元素。例如输入{1,2,3,4,5}的一个旋转为{3,4,5,1,2},该数组的最小值为1。算法思路:1.旋转数组的特点就是一个数组为两个有序的数组,这里以升序为例2.将数组...
分类:
编程语言 时间:
2015-05-09 22:03:20
阅读次数:
111
题意在不使用sizeof()函数的情况下,取出本机的整形所占位数,如32位、64位等。分析我看到题目后的第一思路就是统计二进制中1的个数。但是位数不确定啊,我用了0取反,然后保存的二进制就是N个1了,现在发现-1就行。用unsigned int保存,移位操作统计就好,一个字节8位,所以每次左移8位。...
分类:
编程语言 时间:
2015-05-08 16:38:27
阅读次数:
138