資料結構 資料結構與演算法02

2021-06-18 14:27:04 字數 1542 閱讀 9034

1》演算法設計的原則

設計演算法時,通常應考慮達到以下目標:

1,正確性、2,可讀性、3,健壯性、4,高效率與低儲存量需求

1,正確性:規格說明

四個層次:

a,程式中不含語法錯誤;

b,程式對於幾組輸入資料能夠得出滿足要求的結果;

c,程式對精心選擇的、典型、苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求的結果;

d,程式對於一切合法的輸入資料都能得出滿足要求的結果;

之所以軟體要求維護:d條件是很難滿足的。是個趨勢

2,可讀性:方便人的理解; 難度的程式隱藏錯誤較多,錯誤也難以除錯。

3,健壯性:當輸入的資料非法時,演算法應當恰當地作出反映或進行相應處理,而不是產生莫名其妙的輸出結果。

4,高效率與低儲存量需求:演算法執行時間,儲存空間大小

1,演算法選用的策略

2,問題的規模

3,編寫程式的語言

4,編譯程式產生的機器**的質量

5,計算機執行指令的速度

隨著問題規模n的增長,演算法執行時間的增長率和f(n)的增長率相同,則可以記作:

t(n)=o(f(n));

稱t(n)為演算法的時間複雜度.

演算法=控制結構+原操作(固有資料型別的操作)

演算法的執行時間=原操作(i)的執行次數*原操作(i)的執行時間。

演算法的執行時間與原操作執行次數之和成比例。

for()    }}

時間複雜度:o(n*n*n)

我們在看看選擇排序:

例子二:

void  select_sort(int a ,int n)

}}//select_sort

基本操作:比較操作

語句頻度作為演算法的時間複雜度。

這個演算法的效率與輸入的資料無關。-----》即使輸入的資料是有序的,這雙重for迴圈的次數無關。

例子三:

void bubble_sort(int a ,int n)}}

}//bubble_sort 氣泡排序

開始氣泡資料:5 7 4 2 8 3

5 5 4

2 27 4

2 4 34

2 5

3 42 7

3 5 5

8 3 7 7 7

3 8 8 8 8

最好情況 外迴圈只需執行一次,最壞的情況o(n*n)

平均的時間複雜度: o(n*n)

四、演算法的儲存空間需求

演算法的空間複雜度

s(n)=o(g(n))

演算法的儲存量包括:

1、輸入資料所佔空間;

2、程式本身所佔空間;//可以不考慮

3、輔助變數所佔空間;

選擇排序與氣泡排序中:

輸入資料所佔的空間是相同的;那麼只需考慮輔助變數所佔空間。

學習要點:

理解演算法要素的確切含義。

掌握計算語句頻度和估算演算法時間複雜度的方法。

n*n  與  50*log2(n)  運用高中學習的知識點:觀察它們的二維 曲線

當n趨向於無窮大時 當然是50*log2(n)

資料結構與演算法 棧 02

棧 先進後出 陣列來實現棧的基本操作 author fancy date 2018 12 05 09 31 public class arraystack 壓入資料 author fancy param value public void push int value array topindex ...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

演算法與資料結構 資料結構部分

1.資料結構基本概念 資料結構的基本概念 資料 資料元素 資料結構 資料的邏輯結構 物理結構 演算法等。資料 是對資訊的一種符號表示,是所有能輸入到計算機中並被電腦程式處理的符號的總稱 資料元素 是資料的基本單位,在電腦程式中通常作為乙個整體進行考慮和處理。有時稱為 元素,節點,頂點,記錄等 資料結...