㈠ 加权计算法的案例
加权计算法要建立在对广告效果有基本监测统计手段的基础之上。下面以一个例子来说明:
某企业在宣传方面选择了网络广告,并在一段时间内同时实施了三种方案,投放效果各有不同,基本情况如表1:
方案 投放网站 投放形式 投放时间 广告点击次数 产品销售数量
方案一 A网站BANNER一个月 2000 260
方案二 B网站 BANNER 一个月 4000 170
方案三 C网站 BANNER 一个月 3000 250
从表中的数据可以直接看出方案一获得了最高销售量,似乎是最好的效果。但是衡量网络广告投放的整体效果必须涉及很多方面,比如要考虑广告带来多少注意力、注意力可以转化为多少利润、品牌效应等问题。针对上例情况,就应该进行科学的加权计算法来分析其效果。
这种计算方法很简单,首先,可以为产品销售和获得的点击分别赋予权重,权重的简单算法是:
(260+170+250)/(2000+4000+3000) ≈0.07。(精确的权重算法需要应用大量资料进行统计分析)由此可得,平均每100次点击可形成7次实际购买,那么可以将销售量的权重设为1.00,每次点击的权重为0.07。然后将销售量和点击数分别乘以其对应的权重,最后将两数相加,从而得出该企业通过投放网络广告可以获得的总价值。
方案一,总价值为:260x1.00 + 2000x0.07 = 400;
方案二,总价值为:170x1.00 + 4000x0.07 = 450;
方案三,总价值为:250x1.00 + 3000x0.07 = 460;
计算结果可见,方案三才是为该企业带来最大的价值。虽然第一种方案可以产生最多的实际销售量,第二种方案可以带来最多的注意力,但从长远来看,第三种方案更有价值。
㈡ 二进制的算法 多举个例子。
1、加法法则: 0+0=0,0+1=1+0=1,1+1=10
2、减法法则: 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 有借位,借1当(10)2 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。
3、乘法法则: 0×0=0,0×1=1×0=0,1×1=1
4、除法法则: 0÷1=0,1÷1=1 除法应注意: 0÷0 = 0 0÷1 = 0 1÷0 = 0 (无意义)
(2)算法案例100例扩展阅读
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
㈢ 求经典的递归算法以及案例(可用C#、PHP、JAVA其中一种语言来写)!
我用C#来写(注意,更多的请直接到我的个人博客,点击, http://www.cnblogs.com/serviceboy/archive/2009/07/19/1526590.html,收看) 【例1】有甲、乙、丙、丁四人,从甲开始到丁,一个比一个大1岁,已知丁10岁,问甲几岁?【分析】这是递归法的一道非常典型的题目——因为我们可以很显然知道:假设要计算甲的年龄,那么必须直到乙的年龄;同样,算乙的必须直到丙的,算丙的必须知道丁的,因为丁已知,自然可以往前推算了。现在假设有一个数学模型(函数)可以计算出他们各自的年龄(方便期间我们给他们编号——甲=1,乙=2,丙=3,丁=4),那么存在这一个F(X)函数,X表示某人的编号,其规律如下:F(1)=F(2)+1F(2)=F(3)+1F(3)=F(4)+1F(4)=10显然,直到X=4的时候是一个终止值,其余情况下都是返回F(X’),F(X’’)……F(X’’……’),且前者总是比后至大1,这也符合了X’和X总是呈现一定函数关系(设想一下,如果不是等差和等比,又怎么可能在一个递归函数中进行计算?要知道,函数本身就是一个公式表示,既然是公式,那么一定是一种函数关系Y=F(X)),此处显然X和X’的关系是X=X’+1。根据规律式,我们可以写出该递归函数:int AgeCal(int id)
{
if(id==4) return 10;
else
return (AgeCal(id+1)+1);
} 【例2】计算n!【分析】虽然这道题目不像例1一样清晰明了告诉你使用“递归”法反推,但是我们有这样一个常识——n!=(n-1)!*n;(n-1)!=(n-2)!*(n-1)……n=0或1,返回1.显然n与n-1,n-2也是线性的递减数列(等差关系)。其规律如下:F(n)=F(n-1)*nF(n-1)=F(n-2)*(n-1)F(n-2)=F(n-3)*(n-2)……F(1)=1或者F(0)=1(防止别人直接输入0)编写其递归函数,如下:int Fac(int n)
{
if(n==1 || n==0)
{
return 1;
}
else
return Fac(n-1)*n;
} 【例3】求一组整数中的最大(小)值(整数是一个int[]数组,个数未知)。【分析】当数字只有两个的时候,我们可以使用>和<直接比较;但是当数字超过2个的时候(假设3个),那么我们可以使用一个预订的函数(比如Max(1,2)和3进行比较),由于1,2两个数比较的时候已经得到一个最大值,因此在回代到Max中又变成了两个数的比较。这样,我们可以发现一个规律:F(1,2,3,4……n)=F(1,2,3,4……n-1)和n比较F(1,2,3,4……n-1)=F(1,2,3,4……n-2)和n-1比较……F(1,2,3)=F(1,2)和3比较F(1,2)=结果(并回代)相应的递归函数如下(C#):Code
int Max(int[]numbers)
{
if(numbers.Length==2)
{
return (numbers[0]>numbers[1]?numbers[0]:numbers[1]);
}
else
{
int[]tempnumbers=new int[numbers.Length-1];
for(int i=0;i<numbers.Length-1;++i)
{
tempnumbers[i]=numbers[i];
}
return (Max(tempnumbers)>numbers[numbers.Length-1]? Max(tempnumbers): numbers[numbers.Length-1]
}
}
㈣ 数学乘法1至100内的相乖怎么样快 请朋友给我一个算法的例子。谢谢。
1.十几乘十几:
口诀:头乘头,尾加尾,尾乘尾。
例:12×14=?
解: 1×1=1
2+4=6
2×4=8
12×14=168
注:个位相乘,不够两位数要用0占位。
2.头相同,尾互补(尾相加等于10):
口诀:一个头加1后,头乘头,尾乘尾。
例:23×27=?
解:2+1=3
2×3=6
3×7=21
23×27=621
注:个位相乘,不够两位数要用0占位。
3.第一个乘数互补,另一个乘数数字相同:
口诀:一个头加1后,头乘头,尾乘尾。
例:37×44=?
解:3+1=4
4×4=16
7×4=28
37×44=1628
注:个位相乘,不够两位数要用0占位。
4.几十一乘几十一:
口诀:头乘头,头加头,尾乘尾。
例:21×41=?
解:2×4=8
2+4=6
1×1=1
21×41=861
5.11乘任意数:
口诀:首尾不动下落,中间之和下拉。
例:11×23125=?
解:2+3=5
3+1=4
1+2=3
2+5=7
2和5分别在首尾
11×23125=254375
注:和满十要进一。
6.十几乘任意数:
口诀:第二乘数首位不动向下落,第一因数的个位乘以第二因数后面每一个数字,加下一位数,再向下落。
例:13×326=?
解:13个位是3
3×3+2=11
3×2+6=12
3×6=18
13×326=4238
注:和满十要进一。
㈤ LRU算法具体怎么算的,有没有例子
有例子 LRU(least recently used)最近最久未使用。
假设 序列为 4 3 4 2 3 1 4 2
物理块有3个 则
首轮 4调入内存 4
次轮 3调入内存 3 4
之后 4调入内存 4 3
之后 2调入内存 2 4 3
之后 3调入内存 3 2 4
之后 1调入内存 1 3 2(因为最近最久未使用的是4,从这里向前找最近最久未使用的)
之后 4调入内存 4 1 3(原理同上)
最后 2调入内存 2 4 1
过程就是这样的,楼主只要明白最近最久未使用这个道理,再回去参考书上的例子就明白是怎么算的啦!呵呵!
㈥ Python实现的几个常用排序算法实例
#encoding=utf-8
importrandom
fromimport
defdirectInsertSort(seq):
"""直接插入排序"""
size=len(seq)
foriinrange(1,size):
tmp,j=seq[i],i
whilej>0andtmp<seq[j-1]:
seq[j],j=seq[j-1],j-1
seq[j]=tmp
returnseq
defdirectSelectSort(seq):
"""直接选择排序"""
size=len(seq)
foriinrange(0,size-1):
k=i;j=i+1
whilej<size:
ifseq[j]<seq[k]:
k=j
j+=1
seq[i],seq[k]=seq[k],seq[i]
returnseq
defbubbleSort(seq):
"""冒泡排序"""
size=len(seq)
foriinrange(1,size):
forjinrange(0,size-i):
ifseq[j+1]<seq[j]:
seq[j+1],seq[j]=seq[j],seq[j+1]
returnseq
def_divide(seq,low,high):
"""快速排序划分函数"""
tmp=seq[low]
whilelow!=high:
whilelow<highandseq[high]>=tmp:high-=1
iflow<high:
seq[low]=seq[high]
low+=1
whilelow<highandseq[low]<=tmp:low+=1
iflow<high:
seq[high]=seq[low]
high-=1
seq[low]=tmp
returnlow
def_quickSort(seq,low,high):
"""快速排序辅助函数"""
iflow>=high:return
mid=_divide(seq,low,high)
_quickSort(seq,low,mid-1)
_quickSort(seq,mid+1,high)
defquickSort(seq):
"""快速排序包裹函数"""
size=len(seq)
_quickSort(seq,0,size-1)
returnseq
defmerge(seq,left,mid,right):
tmp=[]
i,j=left,mid
whilei<midandj<=right:
ifseq[i]<seq[j]:
tmp.append(seq[i])
i+=1
else:
tmp.append(seq[j])
j+=1
ifi<mid:tmp.extend(seq[i:])
ifj<=right:tmp.extend(seq[j:])
seq[left:right+1]=tmp[0:right-left+1]
def_mergeSort(seq,left,right):
ifleft==right:
return
else:
mid=(left+right)/2
_mergeSort(seq,left,mid)
_mergeSort(seq,mid+1,right)
merge(seq,left,mid+1,right)
#二路并归排序
defmergeSort(seq):
size=len(seq)
_mergeSort(seq,0,size-1)
returnseq
if__name__=='__main__':
s=[random.randint(0,100)foriinrange(0,20)]
prints
print" "
printdirectSelectSort((s))
printdirectInsertSort((s))
printbubbleSort((s))
printquickSort((s))
printmergeSort((s))
㈦ Rust语言编程实例100题-016
题目: 给定两个正整数m=128和n=60,求其最大公约数和最小公倍数。
程序分析:
(1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
(2)求最大公约数用辗转相除法(又名欧几里德算法)
1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b,
令r=a mod b
设a=kc,b=jc,则k,j互素,否则c不是最大公约数
据上,r=a-mb=kc-mjc=(k-mj)c
可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,
由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,a mod b),得证。
2)算法描述:
第一步:a ÷ b,令r为所得余数(0≤r 第二步:互换:置 a←b,b←r,并返回第一步。
输出格式: 第一行输出最大公约数,第二行输出最小公倍数。
知识点 :循环
程序执行结果:
㈧ 十进制数怎么用,说明和算法,举几个例子
说明:十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是0到9十个数字。
算法:要表示这十个数的10倍,就将这些数字左移一位,用0补上空位,即10,20,30,...,90;要表示这十个数的10倍,就继续左移数字的位置,即100,200,300,...。要表示一个数的1/10,就右移这个数的位置,需要时就0补上空位:1/10位0.1,1/100为0.01,1/1000为0.001
另举例子:10^0(十的零次方) 一、10^1 十、10^2 百、10^3 千、10^4 万以此类推
希望能帮到你。
㈨ 加法的简便算法是什么有什么例子
加法的简便算法,就是要凑成整数,即:
整十、整百、整千……的数,以便于简算。
如:
26+65+74=(26+74)+65=100+65=165;
123+965+877=(123+877)+965=1000+965=1965;
163+836+9=163+837-1+9=(163+837)+8=1000+8=1008;
……
供参考。