首先在說這個之前,我們首先要搞明白,什么是算法?
算法就是任何明確定義的計算過程,它接受一些值或集合作為輸入,并產生一些值或集合作為輸出。因此,算法就是將輸入轉換為輸出的一系列計算過程。算法不僅僅在計算機科學中可以使用,同樣也存在于數學領域中。而且,一個有效的算法應該含有三個有效特性:
1. 有窮性:執行有限步驟后,算法終止;
2. 確切性:算法的每個步驟都必須確切定義;
3. 可行性:特定算法須可以在特定的時間內解決特定問題。
十大算法是哪十大算法呢?
1. 歸并排序(MERGE SORT)、快速排序(QUICK SORT)和堆積排序(HEAP SORT)
2. 傅立葉變換和快速傅立葉變換
3. 狄克斯特拉算法 (Dijkstra's algorithm)
4. RSA非對稱加密算法
5. 哈希安全算法(Secure Hash Algorithm)
6. 整數質因子分解算法(Integer factorization)
7. 鏈接分析算法(Link Analysis)
8. 比例微積分算法(Proportional Integral Derivative Algorithm)
9. 數據壓縮算法
10. 隨機數生成算法

來源于網絡
那么它們有什么特點呢?
1、 歸并排序(MERGE SORT)、快速排序(QUICK SORT)和堆積排序(HEAP SORT)
歸并排序算法,是目前為止最重要的算法之一,是分治法的一個典型應用,由數學家John von Neumann于1945年發明。
快速排序算法,結合了集合劃分算法和分治算法,不是很穩定,但在處理隨機列陣(AM-based arrays)時效率相當高。
堆排序,采用優先佇列機制,減少排序時的搜索時間,同樣不是很穩定。
幸虧有這些算法,才會有今天的人工智能、數據發掘、鏈接分析和大部分網頁計算工具。
2、 傅立葉變換和快速傅立葉變換
傅立葉變換能將滿足一定條件的某個函數表示成三角函數(正弦和/或余弦函數)或者它們的積分的線性組合。在不同的研究領域,傅里葉變換具有多種不同的變體形式,如連續傅立葉變換和離散傅立葉變換。最初傅立葉分析是作為熱過程的解析分析的工具被提出的。
快速傅里葉變換 (fast Fourier transform), 即利用計算機計算離散傅里葉變換(DFT)的高效、快速計算方法的統稱,簡稱FFT。快速傅里葉變換是1965年由J.W.庫利和T.W.圖基提出的。采用這種算法能使計算機計算離散傅里葉變換所需要的乘法次數大為減少,特別是被變換的抽樣點數N越多,FFT算法計算量的節省就越顯著。
3、 狄克斯特拉算法 (Dijkstra's algorithm)
Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。Dijkstra算法是很有代表性的最短路徑算法,在很多專業課程中都作為基本內容有詳細的介紹,如數據結構,圖論,運籌學等等。Dijkstra一般的表述通常有兩種方式,一種用永久和臨時標號方式,一種是用OPEN, CLOSE表的方式,這里均采用永久和臨時標號的方式。
4、 RSA非對稱加密算法
在信息加密領域,有一個算法始終是世界上最重要的算法之一,它就是RSA算法。這個算法是由RSA公司的創始人所建立的,它使信息加密惠及千家萬戶,奠定了當今信息加密的運作基礎。RSA算法用來解決一個簡單而又復雜的問題:怎樣在不同平臺和終端用戶之間共享公鑰,繼而實現信息加密。這樣做更安全,密鑰越長越難破解,就是加密速度慢了點。
5、 哈希安全算法(Secure Hash Algorithm)
確切地說,這不是一種算法,而是一組加密哈希函數,由美國國家標準技術研究所首先提出。無論是你的應用商店,電子郵件和殺毒軟件,還是瀏覽器等等,都使用這種算法來保證你正常下載,以及是否被"中間人攻擊",或者"網絡釣魚"。
6、 整數質因子分解算法(Integer factorization)
這其實是一個數學算法,不過已經廣泛應用與計算機領域。如果沒有這個算法,加密信息也不會如此安全。通過一系列步驟將,它可以將一個合成數分解成不可再分的數因子。很多加密協議都采用了這個算法,就比如剛提到的RSA算法。
7、 鏈接分析算法(Link Analysis)
在因特網時代,不同入口間關系的分析至關重要。從搜索引擎和社交網站,到市場分析工具,都在不遺余力地尋找因特網的正真構造。鏈接分析算法一直是這個領域最讓人費解的算法之一,實現方式不一,而且其本身的特性讓每個實現方式的算法發生異化,不過基本原理卻很相似。鏈接分析算法的機制其實很簡單:你可以用矩陣表示一幅"圖",形成本征值問題。本征值問題可以幫助你分析這個"圖"的結構,以及每個節點的權重。這個算法于1976年由Gabriel Pinski和Francis Narin提出。
搜索引擎是如何進行網頁的相關性排序的呢?除了看網頁本身的關鍵詞密度和關鍵詞位置外,還要看一個更重要的要素,就是鏈接流行度(或稱之為鏈接分析),幾個方面結合起來就能讓排序更加精確。鏈接流行度的原理是,一個網頁擁有的反向鏈接越多,就越有可能是高質量網頁,不然也不會有更多人愿意為其做鏈接。因此,在其他因數相同的條件下,反向鏈接越多的網頁排名更靠前。
8、 比例微積分算法(Proportional Integral Derivative Algorithm)
飛機,汽車,電視,手機,衛星,工廠和機器人等等事物中都有這個算法的身影。簡單來講,這個算法主要是通過"控制回路反饋機制",減小預設輸出信號與真實輸出信號間的誤差。只要需要信號處理,或電子系統來控制自動化機械,液壓和加熱系統,都需要用到這個算個法。
9、 數據壓縮算法
壓縮算法(compaction algorithm)是指數據壓縮的算法,在電子與通信領域也常被稱為信號編碼,包括壓縮和還原(或解碼和編碼)兩個步驟。由于多媒體信號的數據量巨大,所以需要壓縮;同時,由于在多媒體數據中,存在著各種冗余,所以可以壓縮。
10、 隨機數生成算法
如今,計算機尚且無法生成真正的隨機數(擲錢幣、骰子、轉輪、使用電子元件的噪音、核裂變等。需要滿足隨機性、不可預測性、不可重現性),但是可以生成偽隨機數(只要是通過確定算法生成的隨機數,就是偽隨機。如Random算法和Shuffle算法)。隨機數用于網絡互聯、數據加密、游戲、人工智能、優化分析等。