演算法基礎(上)

2021-09-28 21:41:35 字數 1780 閱讀 3336

演算法(algorithm)是指解題方****而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制,簡單來說就是解決問題的步驟

演算法特徵:有窮性、確切性、輸入項、輸出項、可行性特徵

含義有窮性

演算法在執行有限個步驟之後終止

確切性演算法的每一步必須有確切的定義

輸入項乙個演算法有0個或多個輸入

輸出項要有乙個或多個輸出

可行性每個計算步驟都可以在有限時間內完成

主要由空間複雜度和時間複雜度衡量

1、

//執行了1次

2、for

(i =

1; i <= n; i++

)//執行了n次

3、for

(j =

1; j <= n; j++

)for

(j =

1; j <= n; j++

)//執行了n^2次

當問題擴大為n倍,時間複雜度分別為o(1

),o(n),o

(n^2

)

查詢演算法:

//給定有序查詢表array 二分查詢給定的值data

//查詢成功返回下標 查詢失敗返回-1

//二分查詢的時間複雜度為o(logn)

function

search

(array,data)

else

if(data < array[mid]

)else

}return-1

;}

排序演算法:

//最佳執行時,時間複雜度為o(n),最壞為o(n^2)

public

funbubblesort

(array)}}

}

//時間複雜度o(n^2) 

public

funselectionsort

(array)

}// 將最小值放在最前面

if(mink != i)

}}

//最佳:o(n),最壞:o(n^2)

public

fundinsertsort

(array)

array[j +1]

= temp;

}}

遞迴:函式或者方法呼叫自己本身。構成遞迴的條件:明確的遞迴終止條件,給出遞迴終止時處理,提取重複的邏輯.

//階乘

function

f(n)

}

使用遞迴,因為函式呼叫的開銷,如果遞迴深度太大時,往往導致棧溢位。可以使用循壞代替或者尾遞迴

function

f(n, r=1)

function

f(n)

return n;

}

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

function

climb

(n)else

if(n==1)

else

if(n==2)

else

if(n>2)

}

WS BPEL語言基礎(上)

16.1.ws bpel語言基礎 在我們能夠設計編排層之前,我們需要很好地理解如何正式地表達流程的操作特徵。本書使用ws bpel語言來演示流程邏輯如何能夠被作為具體定義的一部分來描述 圖16.1 從而能夠通過相適應的編排引擎來實現和執行。圖16.1.常見的ws bpel流程定義結構 雖然你很可能會...

軟體測試基礎 上

1 軟體的生命週期 需求 設計 編碼 測試 維護 公升級 廢棄 2 軟體測試的流程 需求分析 需求評審 測試計畫 測試用例 用例評審 搭建測試環境 測試執行 回歸測試 測試報告 3 軟體測試的經典定義 在規定的條件下對程式進行操作,以發現錯誤,對軟體的質量進行評估 4 軟體測試的範圍 是對軟體形成中...

CAN匯流排基礎(上)

can匯流排 controller area network,控制器區域網路 由德國博世公司於上世紀80年代提出,近20年來,隨著can匯流排在工業測控與汽車領域的普及,can網路技術不斷優化,取得了長足發展。如今can匯流排已經成為了汽車上不可或缺的重要環節,ecu內部的can匯流排開發也佔到了e...