資料結構與演算法入門(1) 基本概念

2021-07-25 22:35:39 字數 1926 閱讀 2127

資料結構與演算法入門(1)–基本概念

舉個例子

假如我們需要建立乙個學生資料管理系統。我們需要收集學生的資料。建立的目標資料庫應該如下表所示

|學生資訊|

|學生 一|

|學生 二|

|學生 三|

|學生 四|

在學生資料管理系統中,資料元素為每乙個學生的資訊(如:學生一,學生二,學生三分別為三個資料元素)。每乙個學生的資訊包含如id,姓名,年齡等等的資料項。學生一和學生二組成的集合則是資料物件。 把整個資料庫中的學生資訊都合併成乙個集合,這個集合就是我們經常說的概念資料.

讀到這裡,你可能會問:我們不是講資料結構嗎?怎麼用資料庫舉例子?實際上,資料庫軟體開發的思想與資料結構的概念連線的很緊密。兩著都是對資料進行操作與管理。所以,學習資料結構有助於後續資料庫的學習,反過來資料庫中的模型與概念也有利於理解資料結構中的概念。上述例子就是乙個典型的關係型資料庫。

接下來我們介紹資料結構中的兩個核心概念了:

資料型別(data type)–值的集合+定義在此集合上的操作

比如:c語言中,我們定義了乙個int型變數(variable)a。那麼a的取值範圍就固定了(64位作業系統為例,取值範圍為-2^63~2^63-1),同時我們定義了a的運算(如:+ - * / % // 等)

資料型別主要有三種:

-原子型別(其值不可再分的型別)

比如:int float char bool

-結構型別(其值可再分的型別,模擬c語言中的結構和數學中的向量)

比如: c中的結構體

struct student ;

-抽象資料型別(adt,由資料物件,資料關係和基本操作集組成。定義乙個adt僅取決於邏輯特性)

比如:c++中的抽象類

資料結構

-為什麼要有資料結構?

在任何問題中,資料元素並不是孤立存在的,他們之間存在著某種聯絡。這種聯絡叫做結構(structure)

相互之間存在一種或多種聯絡的資料元素的集合叫做資料結構

思考一下:資料結構和資料物件有何異同?

-設計與實現的關係?

演算法的設計取決於資料的邏輯結構,而演算法的實現取決於資料的儲存結構。

演算法的設計與實現分離

一般線性表

推廣線性表

非線性結構

物理結構

資料運算

了解data type和data structure 兩個概念之後,下面我們用一句話來總結什麼是資料結構與演算法:

在面對現實中錯綜複雜的問題,我們通過不同的資料型別和資料結構,將資料儲存在主儲存器中。在此基礎上為實現某一功能而執行相應的操作,這些操作叫做演算法。

如何理解這句話?

1. 不同的問題,採用不同的資料結構。比如:15個學生的資訊儲存使用陣列,150個學生使用鍊錶。人事組織關係架構使用樹結構,地圖路徑導航使用圖結構。

2. 不同的資料結構使用不同的演算法。 比如: 對陣列的遍歷演算法與對鍊錶的遍歷演算法不同。

3. 在2的基礎上,我們可以更深入的理解泛型的概念。泛型就是針對不同的資料結構,提供一種通用的演算法。

總之,如果用最簡單的一句話概括資料結構與演算法,那麼資料結構=個體的儲存+個體關係的儲存,演算法=對所儲存資料的操作。

資料結構與演算法1 基本概念

抽象 描述資料型別的方法不依賴於具體實現 1.解決問題方法的效率,跟資料的組織方式有關 2.解決問題方法的效率,跟空間的利用效率有關 迴圈呼叫 void printn int n return 遞迴呼叫 void printn int n return 列印輸出 include void print...

資料結構與演算法基本概念

一 基本資料結構 基本資料結構的定義 特性 運算 演算法。基本資料結構的分類 邏輯結構 1 線性結構 線性表 棧 佇列 雙佇列 陣列 廣義表 串 2 非線性結構 樹 二叉樹 圖 網 儲存結構 1 順序儲存 向量 一維陣列 2 鏈式儲存 鍊錶 二 演算法 查詢 順序 折半 分塊 雜湊 二叉排序樹 排序...

資料結構與演算法 基本概念

課前導入 如何在書架上擺放圖書,擺放圖書有兩個相關操作。操作1 新書如何插入書架 操作2 如何找到需要的書 方法1 隨便放 一本本挨著放 操作1 直接放在最後面 操作2 一本本的找 方法2 按照書名的首字母排序 操作1 根據新書的首字母 二分查詢該插入的位置 移出空位 操作2 使用二分查詢 方法3 ...