『壹』 談談大家,學習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;
......