md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?
算法是程序的靈魂,只有掌握了算法,才能輕松地駕馭程序開發。軟件開發工作不是按部就班,而是選擇一種最合理的算法去實現項目功能。算法能夠引導開發者在面對一個項目功能時用什么思路去實現,有了這個思路后,編程工作只需要遭循這個思路去實現即可。本章將詳細講解計算機算法的基礎知識,為讀者步入后面的學習打下基礎。
1.1 算法的基礎
自然界中的很多事物并不是獨立存在的,而是和許多其他事物有著千絲萬縷的聯系。就拿算法和編程來說,兩者之間就有著必然的聯系。在編程界有一個不成文的原則,要想學好編程,就必須學好算法。要想獲悉這一說法的原因,先看下面對兩者的定義。
算法是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對符合一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個算法有缺陷,或不適合于某個問題,執行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。
編程是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,并最終得到結果的過程。為了使計算機能夠理解人的意圖,人類就必須將需要解決的問題的思路、方法和手段通過計算機能夠理解的形式"告訴"計算機,使計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。編程的目的是實現人和計算機之間的交流,整個交流過程就是編程。
在上述對編程的定義中,核心內容是思路、方法和手段等,這都需要用算法來實現。由此可見,編程的核心是算法,只要算法確定了,后面的編程工作只是實現算法的一個形式而已。
1.1.1算法的特征
在1950年,算法(Algorithm )一詞經常同歐幾里得算法聯系在一起。這個算法就是在歐幾里得的《幾何原本》中所闡述的求兩個數的最大公約數的過程,即輾轉相除法。從此以后,算法這一叫法一直沿用至今。
隨著時間的推移,算法這門學科得到了長足的發展,算法應該具有如下5個重要的特征。
有窮性:保證執行有限步驟之后結束。
確切性:每一步驟都有確切的定義。
輸入:每個算法有零個或多個輸入,以刻畫運算對象的初始情況。所謂零個輸入,是指算法本身舍棄了初始條件。
輸出:每個算法有一個或多個輸出,顯示對輸入數據加工后的結果,沒有輸出的算法是室無意義的。
可行性:原則上算法能夠精確地運行,進行有限次運算后即可完成一種運算。
1.1.2 何為算法
為了理解什么是算法,先看一道有趣的智力題。"燒水泡茶"有如下5道工序: 1、燒開水, 2、洗茶壺, 3、洗茶杯, 4、拿茶葉,5、泡茶。燒開水、洗茶壺、洗茶杯、拿茶葉是泡茶的前提。其中,燒開水需要15min ,洗茶壺需要2min ,洗茶杯需要1min ,拿茶葉需要1min ,泡茶需要1min.下面是"燒水泡茶"的兩種方法。
方法1的步驟如下。
第1步:燒水。
第2步:水燒開后,洗刷茶具,拿茶葉。
第3步:沏茶。
方法2的步驟如下。
第1步:燒水。
第2步:燒水過程中,洗刷茶具,拿茶葉。
第3步:水燒開后沏茶。
習題:比較這兩種方法有何不同,并分析哪種方法更優。
上述兩種方法都能最終實現“燒水泡茶的功能,每種方法的3個步驟就是一種算法。算法是指在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種算法。前者是推理實現的算法,后者是操作實現的算法。
1.2計算機中的算法
眾所周知,做任何事情都需要一定的步驟。計算機雖然功能強大,能夠幫助人們解決很多問題,但是計算機在解決問題時,也需要遵循一定的步驟。在編寫程序實現某個項目功能時,也需要遭循一定的算法。在本節的內容中,將一起探尋算法在計算機中的地位,探索算法在計算機中的基本應用知識。
1.2.1認識計算機中的算法
計算機中的算法可分為如下兩大類。
數值運算算法:求解數值。
非數值運算算法:事務管理領域。
假設存在如下運算: 1x2x3x4x5,為了計算上述運算結果,最普通的做法是按照如下步驟進行計算。
第1步:先計算1乘以2,得到結果2。
第2步:將步驟1得到的乘積2乘以3,計算得到結果6。
第3步:將6再乘以4,計算得24。
第4步:將24再乘以5,計算得120。
最終計算結果是120,上述第1步到第4步的計算過程就是一個算法。如果想用編程的方式來解決上述運算,通常會使用如下算法來實現。
第1步:假設定義t=1。
第2步:令i=2。
第3步:把x的乘積仍然放在變量中,可表示為txi——t。
第4步:把的值加1,即i+1——i。
第5步:如果i≤5,返回重新執行步驟3以及其后的步驟4和步驟5 ;否則,算法結束。
由此可見,上述算法方式就是數學中的"n,公式。既然有了公式,在具體編程的時候,只需要使用這個公式就可以解決上述運算問題。
再看下面的一個數學應用問題。
假設有80個學生,要求打印輸出成績在60分以上的學生。
在此用n表示學生學號,用n表示第個學生的學號;用cheng表示學生成績,用chengi表示第i個學生的成績。根據題目要求,可以寫出如下算法。
第1步: 1——i。
第2步:如果chengi≥60,則輸出ni和chengi,否則不輸出。
第3步: i+1——i。
第4步:如果i≤80,返回步驟2 ;否則,結束。
由此可見,算法在計算機中的地位十分重要。所以在面對一個項目應用時,一定不要立即編寫程序,而是要仔細思考解決這個問題的算法是什么。想出算法之后,以這個算法為指導思想來編程。
1.2.2為什么說算法是程序的靈魂
算法是計算機處理信息的基礎,因為計算機程序本質上就是算法,告訴計算機確切的步驟來執行一個指定的任務,如計算職工的薪水或打印學生的成績單。通常,當算法在處理信息時,數據會從輸入設備讀取,寫入輸出設備,也可能保存起來供以后使用。
著名計算機科學家沃思提出了下面的公式。
數據結構+算法=程序
實際上,一個程序應當采用結構化程序設計方法進行程序設計,并且用某種計算機語言來表示。因此,可以用下面的公式表示。
程序=算法+數據結構+程序設計方法+語言和環境
上述公式中的4個方面是一種程序設計語言所應具備的知識。在這4個方面中,算法是靈魂,數據結構是加工對象,語言是工具,編程需要采用合適的方法。其中,算法是用來解決“做什么"和怎么做"的問題。實際上程序中的操作語句就是算法的體現,所以說,不了解算法就談不上程序設計。數據是操作對象,對操作的描述便是操作步驟,操作的目的是對數據進行加工處理以得到期望的結果。舉個通俗點的例子,廚師做菜肴,需要有菜譜。菜譜上一般應包括: 1、配料(數據) , 2、操作步驟(算法)。這樣,面對同一原料可以加工出不同風味的菜肴。
本文節選自《Python算法詳解》
全書共13章,基于Python分別講解了算法是程序的靈魂,數據結構,常用的算法思想,線性表、隊列和棧,樹,圖,查找算法,內部排序算法,經典的數據結構問題,解決數學問題,經典算法問題,解決圖像問題,游戲和算法等內容。全書內容以“技術解惑”貫穿全書,引領讀者全面掌握算法的核心技術。
總結
以上是生活随笔為你收集整理的md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Airpods Pro空间音频功能有什么
- 下一篇: python运维脚本部署jdk_基于Ja