日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是算法?

有一個很著名的公式 “程序=數據結構+算法”。

曾經跟朋友吃飯的時候我問他什么是算法,他說算法嘛,就是一套方法,需要的時候拿過來,套用就可以,我吐槽他,他說的是小學數學題的算法,不是編程的算法。

算法,從字面意義上解釋,就是用于計算的方法,通過該這種方法可以達到預期的計算結果。目前,被廣泛認可的算法專業定義是:算法是模型分析的一組可行的,確定的,有窮的規則。通俗的說,算法也可以理解為一個解題步驟,有一些基本運算和規定的順序構成。但是從計算機程序設計的角度看,算法由一系列求解問題的指令構成,能根據規范的輸入,在有限的時間內獲得有效的輸出結果。算法代表了用系統的方法來描述解決問題的一種策略機制。

完成同一件事的不同的算法完成的時間和占用的資源可能并不相同,這就牽扯到效率的問題。算法的基本任務是針對一個具體的問題,找到一個高效的處理方法,從而完成任務。而這就是我們的責任了。

算法的五個特征:

  1. 一個典型的算法一般都可以抽象出5個特征:
  2. 有窮性:算法的指令或者步驟的執行次數和時間都是有限的。
  3. 確切性:算法的指令或步驟都有明確的定義。
  4. 輸入:有相應的輸入條件來刻畫運算對象的初始情況。
  5. 輸出:一個算應有明確的結果輸出。
  6. 可行性:算法的執行步驟必須是可行的。

算法的分類:

根據應用分:

按照算法的應用領域,可以分為基本算法,數據結構相關算法,幾何算法,圖論算法,規劃算法,數值分析算法,加密解密算法,排序算法,查找算法,并行算法,數值算法……

根據確定性分:

  1. 確定性算法:有限時間內完成,得到結果唯一。
  2. 非確定性算法:有限時間內完成,得到結果不唯一,存在多值性。

根據算法的思路分:

遞推算法,遞歸算法,窮舉算法,貪婪算法,分治算法,動態規劃算法,迭代算法等。

算法和公式的關系

算法>=公式

如果沒有接觸到編程,的確很容易將算法理解為數學公式。公式的確具備算法的特征,但是算法并不等于公式,公式是一種高度精簡的算法,算法的形式可以比公式更復雜,解決的問題更加廣泛。

算法和程序的關系 程序也是算法的一種表現形式,也是一種工具

算法和數據結構的關系

數據結構是數據的組織形式,可以用來表現特定的對象數據。

因為不同的數據結構所采用的處理方法不同,計算的復雜程度也不同,因此算法往往依賴于某種某種數據結構。數據結構是算法實現的基礎。

算法的表示:

自然語言表示:

就是用我們的口頭語言來表示算法,這樣很多算法難以描述,不利于發展交流。

流程圖表示:

一般有三種流程結構:

順序結構,分支結構,循環結構

什么是算法?如何學習算法?算法入門的學習路徑

 


什么是算法?如何學習算法?算法入門的學習路徑

 

N-S圖表示:

NS圖也叫作盒圖或者CHAPIN圖,是用于取代傳統流程圖的一種描述方式。 以 SP方法為基礎,NS圖僅含有下圖4.61 的5種基本成分,它們分別表示SP方法的幾種標準控制結構。

什么是算法?如何學習算法?算法入門的學習路徑

 

偽代碼表示:

偽代碼并不是程序代碼,偽代碼介于自然語言和編程用語言之間,是將算法描述成類似編程語言的一種形式。

什么是算法?如何學習算法?算法入門的學習路徑

 

算法的性能評價

算法的效率作為判斷算法優劣的標準。

一個算法的優劣往往通過算法復雜度來衡量,算法復雜度包括時間復雜度空間復雜度兩個方面。其作用:時間復雜度是指執行算法所需要的計算工作量;而空間復雜度是指執行這個算法所需要的內存空間。(算法的復雜性體現在運行該算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間(即寄存器)資源,因此復雜度分為時間和空間復雜度)。

時間復雜度

即通常所說的算法執行所需要耗費的時間,時間越短,算法越好。

計算方法

1.一般情況下,算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近于無窮大時,T(n)/f(n)的極限值為不等于零的常數,則稱f(n)是T(n)的同數量級函數。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復雜度,簡稱時間復雜度。

分析:隨著模塊n的增大,算法執行的時間的增長率和 f(n) 的增長率成正比,所以 f(n) 越小,算法的時間復雜度越低,算法的效率越高。

2. 在計算時間復雜度的時候,先找出算法的基本操作,然后根據相應的各語句確定它的執行次數,再找出 T(n) 的同數量級(它的同數量級有以下:1,log2n,n,n log2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n) = 該數量級,若 T(n)/f(n) 求極限可得到一常數c,則時間復雜度T(n) = O(f(n))。

for(i=1; i<=n; ++i) { 
 for(j=1; j<=n; ++j) { 
//該步驟屬于基本操作執行次數:n的平方次
 c[i][j] = 0; 
 for(k=1; k<=n; ++k) 
//該步驟屬于基本操作執行次數:n的三次方次 
 c[i][j] += a[i][k] * b[k][j];
 } 
 } 

則有 T(n) = n 的平方+n的三次方,根據上面括號里的同數量級,我們可以確定 n的三次方 為T(n)的同數量級

則有 f(n) = n的三次方,然后根據 T(n)/f(n) 求極限可得到常數c

則該算法的時間復雜度:T(n) = O(n^3) 注:n^3即是n的3次方。

空間復雜度

空間復雜度可以分為兩個方面:

1.程序保存所需要的存儲空間,也就是程序的大小。

2.程序在執行過程中所需要消耗的存儲空間資源,如程序在執行過程中的中間變量等。

簡單算法實例:

隨機生成一個20個整數數據的數組,然后輸入要查找的數,然后用順序查找法:

偽代碼:

變量X<-輸入待查找的數據

變量arr<-隨機生成數據數組

for 1 to 20
 if arr[i] ==x
 break;找到數據
 else
 輸出該數據的位置

程序結束

分享到:
標簽:算法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定