版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
算法設計與分析什么是算法什么是算法什么是算法算法與程序輸入:有零個或多個外部量作為算法的輸入。輸出:算法產(chǎn)生至少一個量作為輸出。確定性:組成算法的每條指令清晰、無歧義。有限性:算法中每條指令的執(zhí)行次數(shù)有限,執(zhí)行每條指令的時間也有限。算法是解決問題的方法或過程,嚴格地講是滿足下述性質(zhì)的指令序列。程序是算法用某種程序設計語言的具體實現(xiàn)。程序可以不滿足算法的性質(zhì)(4)即有限性。
算法初體驗—
計數(shù)判斷一個byte里面有多少個bit的值為1?intCal(intiValue){while(iValue!=0){iReminder=iValue%2;if(iReminder==1)iCount++;iValue=iValue/2;
}returniCount;}如果這個子函數(shù)需要調(diào)用很多次,內(nèi)存空間足夠,怎樣提高性能?如果既想省時間,又想省空間,怎樣改進?intiTables[256]={…};iCount=iTables[iValue];HashMapMaps;If(Maps.containsKey(Value)){Count=Maps.get(Value)}else{Maps.put(Value,newInteger(Cal(iValue)))}時間和空間-算法的標桿!算法初體驗—
最大和連續(xù)子數(shù)列問題描述:
給定一個整數(shù)數(shù)列{A1,A2,…,An},求Ai+Ai+1+…+Aj-1+Aj的最大值,并確定對應的子序列。如果所有的整數(shù)都是負數(shù),那么最大連續(xù)子數(shù)列和為0。例如:{1,
-3,4,5}的最大子數(shù)列為{4,5},因為4+5最大;{3,4,-5,8,-4}的最大子數(shù)列為{3,4,-5,8},因為3+4-5+8最大為10;{4,3,-1,2}的最大子數(shù)列為{4,3,-1,2},因為4+3-1+2最大為8。算法-1intmaxSubSum1(constvector<int>&a){intmaxSum=0;
for(inti=0;i<a.size();i++)
for(intj=i;j<a.size();j++){intthisSum=0;
for(intk=i;k<=j;k++)thisSum+=a[k];
if(thisSum>maxSum)maxSum=thisSum;} returnmaxSum;}算法-2intmaxSubSum2(constvector<int>&a){intmaxSum=0;
for(inti=0;i<a.size();i++){intthisSum=0;
for(intj=i;j<a.size();j++){thisSum+=a[j];
if(thisSum>maxSum)maxSum=thisSum;}}
returnmaxSum;}算法-3intmaxSubSum4(constvector<int>&a){intmaxSum=0,thisSum=0;
for(intj=0;j<a.size();j++){thisSum+=a[j];if(thisSum>maxSum)maxSum=thisSum;elseif(thisSum<0)thisSum=0;}returnmaxSum;}算法-4intmaxSumRec(constvector<int>&a,intleft,intright){if(left==right)//Basecaseif(a[left]>0)returna[left];elsereturn0;
intcenter=(left+right)/2;
intmaxLeftSum=maxSumRec(a,left,center); intmaxRightSum=maxSumRec(a,center+1,right);
intmaxLeftBorderSum=0,leftBorderSum=0; for(inti=center;i>=left;i--) { leftBorderSum+=a[i]; if(leftBorderSum>maxLeftBorderSum) maxLeftBorderSum=leftBorderSum; }
intmaxRightBorderSum=0,rightBorderSum=0; for(intj=center+1;j<=right;j++) { rightBorderSum+=a[j]; if(rightBorderSum>maxRightBorderSum) maxRightBorderSum=rightBorderSum; }
return__max(__max(maxLeftSum,maxRightSum), maxLeftBorderSum+maxRightBorderSum);//3者最大}演示程序??!算法并不神奇─枚舉算法并不神奇─遞歸小孩子大都知道并復述過著名的“老和尚講故事”:“從前有個廟,廟里有個老和尚,老和尚給小和尚講故事,講的故事是:從前有個廟,廟里有個老和尚,老和尚給小和尚講故事,講的什么故事呢?故事是……”Void
Story()
{
printf(“從前有個廟,廟里有個老和尚,老和尚給小和尚講故事,\r\n”);
printf(“講的什么故事呢?故事是:\r\n”);
Story();
}算法并不神奇─遞歸算法并不神奇─分治策略算法并不神奇─貪心策略從西直門到所有站的最快乘車路線找零錢策略算法并不神奇─回溯技巧國際象棋大師卡斯帕羅夫與電腦的人機大戰(zhàn)迷宮游戲為什么要學算法算法是軟件的靈魂,是計算機科學各個研究領(lǐng)域的核心算法+數(shù)據(jù)結(jié)構(gòu)=軟件計算機視覺:人臉識別、圖像壓縮數(shù)據(jù)挖掘:商品推薦、web搜索信息安全:RSA加密算法、入侵檢測計算機圖形學:動畫生成、3D渲染數(shù)據(jù)庫:索引、排序……為什么要學算法算法是軟件的靈魂,是計算機科學各個研究領(lǐng)域的核心算法是諸多前沿信息技術(shù)的核心角色,計算思維是信息時代的最重要思維方式之一"EveryoneknowsMoore'sLaw-apredictionmadein1965byIntelco-founderGordonMoorethatthedensityoftransistorsinintegratedcircuitswouldcontinuetodoubleevery1to2years...inmanyareas,performancegainsduetoimprovementsinalgorithmshavevastlyexceededeventhedramaticperformancegainsduetoincreasedprocessorspeed.“—ExcerptfromReprottothePresidentandCongress:DesigningaDigitalFuture,December2010(page71).為什么要學算法算法是軟件的靈魂,是計算機科學各個研究領(lǐng)域的核心算法是諸多前沿信息技術(shù)的核心角色,計算思維是信息時代的最重要思維方式之一“Apersonwell-trainedincomputerscienceknowshowtodealwithalgorithms:howtoconstruct
them,manipulatethem,understandthem,analyzethem.Thisknowledgeispreparationformuchmorethanwritinggoodcomputerprograms:itisageneral-purposementaltoolthatwillbeadefiniteaidtotheunderstandingofothersubjects,whethertheybechemistry,linguistics,ormusic,etc.Thereasonforthismaybeunderstoodinthefollowingway:Ithasoftenbeensaidthatapersondoesnotreallyunderstandsomethinguntilafterteachingittosomeoneelse.Actually,apersondoesnotreallyunderstandsomethinguntilafterteachingittoacomputer,i.e.,expressingitasanalgorithm...Anattempttoformalizethingsasalgorithmsleadstoamuchdeeperunderstandingthanifwesimplytrytocomprehendthingsinthetraditionalway.”
—
DonaldKnuth“Algorithms:acommonlanguagefornature,human,andcomputer.”
—AviWigderson為什么要學算法算法是軟件的靈魂,是計算機科學各個研究領(lǐng)域的核心算法是諸多前沿信息技術(shù)的核心角色,計算思維是信息時代的最重要思維方式之一
薛定諤方程:傅立葉變換:20世紀之前科學研究:基于數(shù)學公式21世紀的科學研究:基于計算機算法為什么要學算法算法是軟件的靈魂,是計算機科學各個研究領(lǐng)域的核心內(nèi)容算法是諸多前沿信息技術(shù)的核心角色,計算思維是信息時代的最重要思維方式之一算法是IT頂級公司面試考核的重要內(nèi)容題目1:今有30根火柴,兩人依次從中拿取,規(guī)定每次只能從一堆中取一根或兩根,最后取完者為勝。假設對手先取,你是否有必勝的策略?如果有,請告知獲勝策略;否則,請說明理由。題目2:有15瓶藥水,其中一瓶有毒。一只小白鼠喝下藥水以后是否中毒的癥狀在1個小時的時候才能被檢測出來。如果你有4只小白鼠,是否有辦法用一個小時的時間檢測出有毒的藥水?課程安排緒論算法復雜性枚舉策略遞歸與分治動態(tài)規(guī)劃貪心算法搜索技術(shù)考試安排形式:開卷分數(shù)構(gòu)成:出勤(10)課堂作業(yè)(30)期末考試成績(60)學習資源MOOCs資源Stanford“DesignandAnalysisofAlgorithms”Part1&2onCourseraPrinceton“Algorithms”Part1&2onCoursera(Opening)MIT“IntroductionofAlgorithms”臺灣師范大
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玉米淀粉在飲料穩(wěn)定性中的作用與應用考核試卷
- 2025年度旅游度假村按摩技師聘用合同模板3篇
- 二零二五年個人車位使用權(quán)轉(zhuǎn)讓與車位使用權(quán)互換合同3篇
- 《情境教學法在初中《道德與法治》教學中的應用研究》
- 《屈原故里端午習俗傳承與保護研究》
- 二零二五年度zfcxjs.tj.gov.cnsylmRSS教育信息化建設項目合同3篇
- 《干燥綜合征相關(guān)免疫學指標與中醫(yī)辨證分型的研究》
- 《改性纖維素基抗菌膜的制備與研究》
- 學校采摘課程設計
- 二零二五年度XX電子商務平臺安全保障合同范本3篇
- 2024-2030年中國硅肥行業(yè)規(guī)模分析及投資前景研究報告
- 電網(wǎng)行業(yè)工作匯報模板22
- 2024年度跨境電商平臺承包經(jīng)營合同3篇
- 2025年上半年人民日報社招聘應屆高校畢業(yè)生85人筆試重點基礎提升(共500題)附帶答案詳解
- 山東省臨沂市2023-2024學年高二上學期期末考試生物試題 含答案
- 2024-2025學年一年級數(shù)學上冊期末樂考非紙筆測試題(二 )(蘇教版2024秋)
- 辦公樓電氣改造施工方案
- 浙江省衢州市2023-2024學年高一上學期期末英語試題(含答案)3
- 上學期高二期末語文試卷(含答案)
- 超齡員工用工免責協(xié)議書
- 《雁門太守行》課件
評論
0/150
提交評論