數據結構(Data structure):是計算機組織數據和存儲數據的方式,是指一組相互之間存在一種或多種特定關係的數據的組織方式和它們在計算機內的存儲方式,以及定義在該組數據上的一組操做。算法
數據結構:數據的邏輯結構+數據的存儲結構+數據的基本運算數據庫
計算機解決問題的步驟:編程
1976年瑞士計算機科學家尼克勞斯·維爾特[Niklaus Wirth]提出:算法+數據結構=程序數據結構
數據(Data):全部能被計算機處理的符號的集合。實際問題中的數據稱爲原始數據
數據元素(Data Element):是數據這個集合中的一個個體即數據的基本單位。
數據項(Data Item):數據元素經常還可分爲若干個數據項,數據項是數據具備意義的最小單位;數據庫中,數據項又稱爲字段/域,它是數據的不可分割的最小標識單位。函數
一、數據的邏輯結構:數據的邏輯結構是指數據及數據的組織方式,是一種數學模型;指數據元素之間的結構關係設計
數據的邏輯結構(D, {R}) 可分爲下列幾種: D = {d1,d2, …, dn}指針
二、數據的存儲結構(物理結構):數據的存儲結構是指數據的邏輯結構在計算機中的表示,數據的存儲結構分爲順序存儲結構和連接存儲結構兩種。對象
存儲結構的主要部分:blog
數據結構的存儲=數據元素的存儲+元素邏輯關係的存儲索引
元素關聯關係的存儲方式主要有:
=============順序存儲方式=================
順序存儲方式:藉助數據元素的相對存儲位置來表示數據的邏輯結構;
線性表的順序存儲方法:將表中的結點一次存放在計算機內存中一組連續的存儲單元中。
順序的方法: 將元素存儲到一片連續的存儲區
特色:
=============鏈式存儲方式=================
鏈式存儲方式:藉助數據元素地址的指針表示數據的邏輯結構;這種結構是給結點附加一個指針字段,指出其後繼節點的位置,即存放結點的存儲單元分爲兩部分:數據項和指針項
特色:
===========索引存儲方式===============
索引存儲方式:藉助索引表中的索引指示各存儲節點的存儲位置。
===========散列存儲方式===============
散列存儲方式:用散列函數指示各節點的存儲位置。
三、運算
運算:指在某種邏輯結構上施加的操做,即對邏輯結構的加工。
加工型運算:其操做改變原邏輯結構的值;如:結點個數,結點內容等。
引用型運算:其操做不改變原邏輯結構的值。
基本運算:創建(建立)、查找 、讀取 、插入 、刪除
算法:算法規定了求解給定類型問題所需的全部「處理步驟」及執行順序,使給定類型問題能在有限時間內被機械的求解。
算法必須使用某種語言描述:
一個算法是對特定問題求解步驟的一種描述,它是指令的有窮序列。
算法具備如下特性:
算法的設計應知足:
最優算法的2個度量:
肯定算法的計算量:
================時間複雜度================
運行該代碼須要1秒 ,時間複雜度記做O(1)
運行該代碼須要n*1秒 時間複雜度記做O(n)
運行該代碼須要n*n*1秒 時間複雜度記做O(n*n);
================空間複雜度===============
空間複雜度:是對一個算法在運行過程當中臨時佔用存儲空間大小的量度;估算算法空間複雜度時,通常只分析輔助變量所佔用的空間。
一個算法在執行期間所須要的存儲空間量包括如下部分: