資料結構與演算法學習筆記(一)

2021-10-02 13:25:05 字數 1541 閱讀 9429

資料:計算機操作的物件

資料元素:組成資料的基本基本單位

資料項:乙個資料元素可以由若干個資料項組成

資料物件:性質相同的資料元素的集合

資料結構:是相互之間存在一種或多種特定關係的資料元素的集合

資料型別

1.原子型別:不可以在分解的基本型別,包括整型,字元型

2.結構型別:由若干個型別組合而成

抽象資料型別:指乙個數學模型及定義在該模型上的一組操作

1.集合結構:集合結構中的資料元素除了同屬於乙個集合以外,沒有其他關係

2.線性結構:資訊架構中的資料結構之間是一對一的關係

3.樹形結構:樹形結構中的資料元素存在一對多的資料關係

4.圖形結構:圖形結構中的資料元素存在多對多的關係

2.鏈式儲存結構:把資料結構存放在任意的儲存單元裡,可以是連續也可以是不連續

定義:解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作

特性1.輸入輸出:演算法具有零個或多個輸入,至少有乙個或多個輸出

2.有窮性:演算法在執行有限的步驟後自動結束,不會無限迴圈,並且每個步驟在可接受的時間內完成

3.確定性:演算法的每一步都具有確定的意義

4.可行性:每一步都必須可行

演算法設計的要求

1.正確性:

程式不含語法錯誤。

程式對於幾組輸入資料得出滿足規格說明要求的結果。

程式對於精心選擇的典型、苛刻而帶有發難性的幾組輸入資料能夠得出滿足規格說明要求的結果。

程式對於一切合法的輸入資料都能產生滿足規格說明要求的結果。

2.可讀性:便於理解,閱讀和交流

3.健壯性:當輸入資料非法時,演算法也能適當地做出反應或進行處理,而不會產生黃曉明其妙的輸出結果

4.時間效率高和儲存量低

時間複雜度和空間複雜度

時間複雜度:評估執行程式所需的時間。可以估算出程式對處理器的使用程度。

空間複雜度:評估執行程式所需的儲存空間。可以估算出程式對計算機記憶體的使用程度。

大o階

常用o()來表示時間複雜度

推導大o階方法

1.用常數1來取代執行時間中所有加法常數。

2.修改後的執行次數函式中,只保留最高端項

3.如果最高端項存在且不是1,則去除與這個項相乘的常數。

三者運用後得到的結果就是大o階

常見的時間複雜度

執行次數函式階12

o(1)

2n+3

o(n)

3n²+2n+1

o(n²)

5log2n+20

o(logn)

2n+nlog2n+19

o(nlogn)

6n³+2n²+3n+2

o(n³)

2ⁿo(2ⁿ)

o(1)

資料結構與演算法學習筆記

演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...

資料結構與演算法學習筆記3

最好情況時間複雜度 最壞情況時間複雜度 平均情況時間複雜度 均攤時間複雜度 例 在乙個無序的陣列 array 中,查詢變數 x 出現的位置。如果沒有找到,就返回 1 n表示陣列array的長度 intfind int array,int n,int x return pos 時間複雜度 o n nn...

資料結構與演算法學習筆記4

一 陣列 array 是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。a i address base address i data type size 注 data type size 表示陣列中每個元素的大小 陣列和鍊錶的區別 鍊錶適合插入 刪除,時間複雜度 o 1...