演算法及其分析

2021-07-23 20:35:42 字數 615 閱讀 3118

乙個演算法是對特定問題的求解步驟的一種描述,它是指令的有限序列。

演算法的5個特徵:

輸入——零個或者多個輸入

輸出——至少乙個輸出

確定性——沒有二義性

能行性有窮性——執行有限步後終止

演算法可以用自然語言、流程圖或者程式語言描述。

衡量演算法效能的標準:

正確性——執行結果應當滿足預先規定的功能和效能要求

簡明性——思路清晰、層次分明、簡單明瞭、易讀易懂

健壯性——當輸入不合法資料時,能做適當處理,不至於引起嚴重後果

效率——有效使用儲存空間,有高的時間效率

補充:正確的程式不一定是健壯的,健壯的程式不一定正確。乙個可靠的程式應當在正常情況下正確地工作,在異常情況下,能做出適當處理。

演算法的時間複雜度是指程式從開始到結束說需要的時間。可以採用事前分析和事後測試。

t(n)=o(g(n))

空間複雜度是指程式執行從開始到結束所需的儲存量。包括兩部分:

固定部分:與所處理資料的大小和個數無關,主要包括程式**、常量、簡單變數、定長部分的結構變數所佔的空間

可變部分:在某次執行中處理的特定資料的大小和規模有關。

空間複雜度一般按最壞情況分析。

演算法分析及其優劣判斷

同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 演算法的時間複雜度是指執行演算法所需要的時間。一般來說,計算機演算法是問題規模 n 的函式 f n 演算...

插入排序演算法及其分析

直接插入排序 1.插入排序思想 直接插入排序思想是將待排序的陣列看作兩個部分 有序部分和無序部分,排序過程就是不斷將無序部分的元素插入到有序部分合適的位置上,使有序部分元素不斷增加而無序部分資料不斷減少,直到陣列全部有序為止。假設陣列a 0.n 1 1 初始時,a 0 作為有序部分,a 1.n 1 ...

經典排序演算法分析及其Java實現

排序可分為兩種 內排序和外排序。在排序過程中,全部記錄存放在記憶體,稱為內排序 如果排序過程中需要使用外存,則成為外排序。內排序有以下幾類 直接插入排序 氣泡排序和簡單選擇排序是基本的排序方法。它們平均情況下的時間複雜度都是o n2 它們的實現也都非常簡單。直接插入排序對於規模很小的元素序列 n 2...