‘壹’ 谈谈大家,学习des算法的心得
DES算法是明文分组为64位,有效密钥56位,输出密文64位的,具有16轮迭代的分组对称密码算法。通过学习此算法,了解到了许多函数,其中有密钥生成函数,加密函数,解密函数,测试函数以及密钥长度检验函数等。
‘贰’ Shell排序的算法总结
下面几个算法有研究价值 /**D.Shell最初的算法。*/intshellsortSh(intp[],intn){intop=0;inth,i,j,temp;for(h=n/2;h>0;h=h/2){for(i=h;i<n;i++){temp=p[i];for(j=i-h;j>=0&&p[j]>temp;j-=h){p[j+h]=p[j];op++;}p[j+h]=temp;op++;}}returnop;}shell排序算法C语言实现voidshellsort(intv[],intn){intgap,i,j,temp;for(gap=n/2;gap>0;gap/=2){for(i=gap;i<n;i++){for(j=i-gap;j>=0&&v[j]>v[j+gap];j-=gap){temp=v[j];v[j]=v[j+gap];v[j+gap]=temp;}}}}Lazarus-Frank 算法,1960 年发表。 /**原为在必要时加1使所有增量都为奇数,现修正为减1。*/intshellsortLF(intp[],intn){intop=0;inth,i,j,temp;for(h=n/2;h>0;h=h/2){if(h%2==0)h--;for(i=h;i<n;i++){temp=p[i];for(j=i-h;j>=0&&p[j]>temp;j-=h){p[j+h]=p[j];op++;}p[j+h]=temp;op++;}}returnop;} intshellsortGo(intp[],intn){intop=0;inth,i,j,temp;for(h=n;h>1;){h=(h<5)?1:(h*5-1)/11;for(i=h;i<n;i++){temp=p[i];for(j=i-h;j>=0&&p[j]>temp;j-=h){p[j+h]=p[j];op++;}p[j+h]=temp;op++;}}returnop;}Incerpj-Sedgewick 算法,1985 年发表。 intshellsortIS(intp[],intn){intop=0;inth,i,j,t,temp;intincs[16]={/*a1=3,a2=7,a3=16,a4=41,a5=101*/1391376,/*a1*a2*a3*a4*a5*/463792,/*a2*a3*a4*a5*/198768,/*a1*a3*a4*a5*/86961,/*a1*a2*a4*a5*/33936,/*a1*a2*a3*a5*/13776,/*a1*a2*a3*a4*/4592,/*a2*a3*a4*/1968,/*a1*a3*a4*/861,/*a1*a2*a4*/336,/*a1*a2*a3*/112,/*a2*a3*/48,/*a1*a3*/21,/*a1*a2*/7,/*a2*/3,/*a1*/1};for(t=0;t<16;t++){h=incs[t];for(i=h;i<n;i++){temp=p[i];for(j=i-h;j>=0&&p[j]>temp;j-=h){p[j+h]=p[j];op++;}p[j+h]=temp;op++;}}returnop;}
‘叁’ 算法设计与分析课程总结怎么写、急急急!!!!!!
一、算法分析的基本思路
二、算法设计的解决方案
三、对过程的综合总结
‘肆’ 关于算法的学习过程
你说的应该是计算机算法吧,如果真要在这上面深究的话,建议还是提高数学基础,最基础的两门课是离散数学与数据结构,当然一般高校的教材都还是比较不错的,数据结构这个东西一开始比较抽象,等你学过后悟一悟就会发现很有意思,把它学好,争取能自己理解并实际编程实现常用的所有数据结构及其相关算法,然后就看“计算机算法基础”这本书吧,从分治法到回溯法等等等等,把常用的算法(典型问题)学会并用程序实现它们,这样的话就差不多了。推荐几本书:《数据结构》、《计算机算法基础》、《算法:C语言实现》(两本,普林斯顿大学的Robert着)。另外,当你基础够好的时候,就看看算法界的宗师Donald E. Knuth(高德纳)的经典算法巨作<The Art Of Computer Programming>(简称TAOCP,共3卷)及其有关数学基础的书<具体数学>.
当你把这一切都学完(学会)之后,相信你的算法水平已经到了个相当的高度。比尔·盖茨曾说过,如果学完了3卷TAOCP,就把简历寄给他。努力吧!算法很有趣,一步步来,相信你会成功的。
‘伍’ 《算法心得:高效算法的奥秘(原书第2版)》pdf下载在线阅读,求百度网盘云资源
《算法心得:高效算法的奥秘(原书第2版)》([美] Henry S. Warren, Jr.)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1c2AAxOe1HvDXDia4RorcVg 密码:t38w
书名:算法心得:高效算法的奥秘(原书第2版)
作者:[美] Henry S. Warren, Jr.
译者:爱飞翔
豆瓣评分:8.8
出版社:机械工业出版社
出版年份:2014-3
页数:419
内容简介:
在本书中,作者给我们带来了一大批极为诱人的知识,其中包括各种节省程序运行时间的技巧、算法与窍门。学习了这些技术,程序员就可写出优雅高效的软件,同时还能洞悉其中原理。这些技术极为实用,而且其问题本身又非常有趣,有时甚至像猜谜解谜一般,需要奇思妙想才行。简而言之,软件开发者看到这些改进程序效率的妙计之后,定然大喜。
作者简介:
【作者简介】
Henry S. Warren, Jr.
计算机科学家,在IBM供职50余年,经历了IBM704时代、PowerPC时代及其后种种更迭。曾参与多个军事指挥与控制系统工程,并且参加了由Jack Schwarz领衔的“SET语言”项目。自1973年起,Hank就职于IBM研发部,努力探索编译器和计算机架构。当前正研究一种旨在每秒执行百亿亿次运算的超级计算机。Hank拥有纽约大学柯朗数学科学研究所计算机科学博士学位。
【译者简介】
爱飞翔
资深软件开发工程师,擅长Web开发、移动开发和游戏开发,有10余年开发经验,曾主导和参与了多个手机游戏和手机软件项目的开发,经验十分丰富。他是手机软件开发引擎AgileMobileEngine的创始人兼项目经理,同时也是CatEngine手机游戏开发引擎的联合创始人兼代码维护员。他对极限编程、设计模式、重构、测试驱动开发、敏捷软件开发等也有较深入的研究,目前负责敏捷移动开发网(http://www.agilemobidev.com/)的运营。业余爱好文学和历史,有一定的文学造诣。翻译并出版了多本计算机着作。
‘陆’ 关于数学算法,总结公式
1、 每份数×份数=总数 总数÷每份数=份数总数÷份数=每份数
2、 1倍数×倍数=几倍数 几倍数÷1倍数=倍数几倍数÷倍数=1倍数
3、 速度×时间=路程 路程÷速度=时间 路程÷时间=速度
4、 单价×数量=总价 总价÷单价=数量 总价÷数量=单价
5、 工作效率×工作时间=工作总量 工作总量÷工作效率=工作时间工作总量÷工作时间=工作效率
6、 加数+加数=和 和-一个加数=另一个加数
7、 被减数-减数=差 被减数-差=减数 差+减数=被减数
8、 因数×因数=积 积÷一个因数=另一个因数
9、 被除数÷除数=商 被除数÷商=除数 商×除数=被除数
小学数学图形计算公式
1 、正方形 C周长 S面积 a边长 周长=边长×4 C=4a 面积=边长×边长 S=a×a
2 、正方体 V:体积 a:棱长 表面积=棱长×棱长×6 S表=a×a×6 体积=棱长×棱长×棱长 V=a×a×a
3 、长方形
C周长 S面积 a边长
周长=(长+宽)×2
C=2(a+b)
面积=长×宽
S=ab
4 、长方体
V:体积 s:面积 a:长 b: 宽 h:高
(1)表面积(长×宽+长×高+宽×高)×2
S=2(ab+ah+bh)
(2)体积=长×宽×高
V=abh
5 三角形
s面积 a底 h高
面积=底×高÷2
s=ah÷2
三角形高=面积 ×2÷底
三角形底=面积 ×2÷高
6 平行四边形
s面积 a底 h高
面积=底×高
s=ah
7 梯形
s面积 a上底 b下底 h高
面积=(上底+下底)×高÷2
s=(a+b)× h÷2
8 圆形
S面积 C周长 ∏ d=直径 r=半径
(1)周长=直径×∏=2×∏×半径
C=∏d=2∏r
(2)面积=半径×半径×∏
9 圆柱体
v:体积 h:高 s;底面积 r:底面半径 c:底面周长
(1)侧面积=底面周长×高
(2)表面积=侧面积+底面积×2
(3)体积=底面积×高
(4)体积=侧面积÷2×半径
10 圆锥体
v:体积 h:高 s;底面积 r:底面半径
体积=底面积×高÷3
总数÷总份数=平均数
和差问题的公式
(和+差)÷2=大数
(和-差)÷2=小数
和倍问题
和÷(倍数-1)=小数
小数×倍数=大数
(或者 和-小数=大数)
差倍问题
差÷(倍数-1)=小数
小数×倍数=大数
(或 小数+差=大数)
植树问题
1 非封闭线路上的植树问题主要可分为以下三种情形:
⑴如果在非封闭线路的两端都要植树,那么:
株数=段数+1=全长÷株距-1
全长=株距×(株数-1)
株距=全长÷(株数-1)
⑵如果在非封闭线路的一端要植树,另一端不要植树,那么:
株数=段数=全长÷株距
全长=株距×株数
株距=全长÷株数
⑶如果在非封闭线路的两端都不要植树,那么:
株数=段数-1=全长÷株距-1
全长=株距×(株数+1)
株距=全长÷(株数+1)
2 封闭线路上的植树问题的数量关系如下
株数=段数=全长÷株距
全长=株距×株数
株距=全长÷株数
盈亏问题
(盈+亏)÷两次分配量之差=参加分配的份数
(大盈-小盈)÷两次分配量之差=参加分配的份数
(大亏-小亏)÷两次分配量之差=参加分配的份数
相遇问题
相遇路程=速度和×相遇时间
相遇时间=相遇路程÷速度和
速度和=相遇路程÷相遇时间
追及问题
追及距离=速度差×追及时间
追及时间=追及距离÷速度差
速度差=追及距离÷追及时间
流水问题
顺流速度=静水速度+水流速度
逆流速度=静水速度-水流速度
静水速度=(顺流速度+逆流速度)÷2
水流速度=(顺流速度-逆流速度)÷2
浓度问题
溶质的重量+溶剂的重量=溶液的重量
溶质的重量÷溶液的重量×100%=浓度
溶液的重量×浓度=溶质的重量
溶质的重量÷浓度=溶液的重量
利润与折扣问题
利润=售出价-成本
利润率=利润÷成本×100%=(售出价÷成本-1)×100%
涨跌金额=本金×涨跌百分比
折扣=实际售价÷原售价×100%(折扣<1)
利息=本金×利率×时间
税后利息=本金×利率×时间×(1-20%)
长度单位换算
1千米=1000米 1米=10分米
1分米=10厘米 1米=100厘米
1厘米=10毫米
面积单位换算
1平方千米=100公顷
1公顷=10000平方米
1平方米=100平方分米
1平方分米=100平方厘米
1平方厘米=100平方毫米
体(容)积单位换算
1立方米=1000立方分米
1立方分米=1000立方厘米
1立方分米=1升
1立方厘米=1毫升
1立方米=1000升
重量单位换算
1吨=1000 千克
1千克=1000克
1千克=1公斤
人民币单位换算
1元=10角
1角=10分
1元=100分
时间单位换算
1世纪=100年 1年=12月
大月(31天)有:1\3\5\7\8\10\12月
小月(30天)的有:4\6\9\11月
平年2月28天, 闰年2月29天
平年全年365天, 闰年全年366天
1日=24小时 1时=60分
1分=60秒 1时=3600秒
小学数学几何形体周长 面积 体积计算公式
1、长方形的周长=(长+宽)×2 C=(a+b)×2
2、正方形的周长=边长×4 C=4a
3、长方形的面积=长×宽 S=ab
4、正方形的面积=边长×边长 S=a.a= a
5、三角形的面积=底×高÷2 S=ah÷2
6、平行四边形的面积=底×高 S=ah
7、梯形的面积=(上底+下底)×高÷2 S=(a+b)h÷2
8、直径=半径×2 d=2r 半径=直径÷2 r= d÷2
9、圆的周长=圆周率×直径=圆周率×半径×2 c=πd =2πr
‘柒’ 舍伍德算法的总结
采用数组模拟有序链表,它本质上是利用两个数组,一个存储数据,一个存储其后继在数组中的位置,对于查找指定元素,采用舍伍德算法可在0(n)时间内完成,采用顺序存储结构时,若数组元素无序,则只能顺序查找,需O(n)时间,若数组元素有序,可进行二分法查找,其时问复杂度虽然降为0(logn),但却在进行插入和删除元素时,需要移动大量元素。与链式存储相比,插入和删除时虽然都不需要移动元素,但在查找上,其时间性能由0(n)降为O(n),可见采用数组模拟有序链表,并采用舍伍德算法进行查找删除具有比较高的效率。它不失为一种高效韵数据结构。
‘捌’ 如何学习算法
个人觉得,世界上的算法多如牛毛,要想全部系统地学习恐怕是不大可能的。只有一边学编程一边自己总结。当然典型的一些算法还是要记下来的。比如最基本的排序等,以及稍微高级点的求最段路径等。
‘玖’ 请问有谁有计算机各种经典算法的总结性介绍有源代码最好
http://blog.csdn.net/ctu_85/archive/2008/05/11/2432736.aspx
上面的内容应有尽有,连代码都给出了:
经典算法设计方法大杂烩
经典算法设计方法
一、什么是算法
算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。时间复杂度用“O(数量级)”来表示,称为“阶”。常见的时间复杂度有: O(1)常数阶;O(log2n)对数阶;O(n)线性阶;O(n2)平方阶。
算法的空间复杂度是指算法需要消耗的空间资源。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
二、算法设计的方法
1.递推法
递推法是利用问题本身所具有的一种递推关系求问题解的一种方法。设要求问题规模为N的解,当N=1时,解或为已知,或能非常方便地得到解。能采用递推法构造算法的问题有重要的递推性质,即当得到问题规模为i-1的解后,由问题的递推性质,能从已求得的规模为1,2,…,i-1的一系列解,构造出问题规模为I的解。这样,程序可从i=0或i=1出发,重复地,由已知至i-1规模的解,通过递推,获得规模为i的解,直至得到规模为N的解。
【问题】 阶乘计算
问题描述:编写程序,对给定的n(n≤100),计算并输出k的阶乘k!(k=1,2,…,n)的全部有效数字。
由于要求的整数可能大大超出一般整数的位数,程序用一维数组存储长整数,存储长整数数组的每个元素只存储长整数的一位数字。如有m位成整数N用数组a[ ]存储:
N=a[m]×10m-1+a[m-1]×10m-2+ … +a[2]×101+a[1]×100
并用a[0]存储长整数N的位数m,即a[0]=m。按上述约定,数组的每个元素存储k的阶乘k!的一位数字,并从低位到高位依次存于数组的第二个元素、第三个元素……。例如,5!=120,在数组中的存储形式为:
3 0 2 1 ……
首元素3表示长整数是一个3位数,接着是低位到高位依次是0、2、1,表示成整数120。
计算阶乘k!可采用对已求得的阶乘(k-1)!连续累加k-1次后求得。例如,已知4!=24,计算5!,可对原来的24累加4次24后得到120。细节见以下程序代码。
# include <stdio.h>
# include <malloc.h>
# define MAXN 1000
void pnext(int a[ ],int k)
{ int *b,m=a[0],i,j,r,carry;
b=(int * ) malloc(sizeof(int)* (m+1));
for ( i=1;i<=m;i++) b[i]=a[i];
for ( j=1;j<=k;j++)
{ for ( carry=0,i=1;i<=m;i++)
{ r=(i<a[0]?a[i]+b[i]:a[i])+carry;
a[i]=r%10;
carry=r/10;
}
if (carry) a[++m]=carry;
......