數據結構(Data structure)是指一組相互之間存在一種或多種特定關係的數據的數據的組織方式和他們在計算機內的存儲方式,以及定義在該組數據上的一組操做。算法
1)數據(計算機加工對象)的邏輯結構數據庫
2)實現各類基本操做的算法編程
計算機解決問題的步驟分爲:數據結構
數據的邏輯結構是指數據以及數據的組織方式函數
1976年瑞士計算機尼克勞斯提出 「算法+數據結構=程序」
spa
數據結構分爲:數據的邏輯結構、數據的存儲結構,數據的基本運算設計
數據data:全部能被計算機處理的符號的集合指針
數據元素dataElement:是數據這個集合中的一個個體即數據的基本單位對象
數據項date item :數據元素經常還可分爲若干個數據項,數據項是數據具備意義的 最小單位blog
如圖所示,三種之間是包含關係,在數據庫中數據項又稱爲字段或域 。它是數據的不可分割的最小表示單位。
實際問題中的數據稱爲原始數據
邏輯結構:指數據元素之間的結構關係
物理結構(存儲結構):指書記接哦古在機內的表示,數據的邏輯結構在計算機中的實現。
邏輯結構的類型 :集合、線性結構、樹狀結構、圖狀結構
數據的存儲結構
數據結構的存儲包含數據元素的存儲以及其邏輯關係的存儲
存儲結構可分爲:順序存儲結構、鏈式存儲結構、索引存儲方式和散列存儲方式等
順序存儲結構:藉助數據元素的相對存儲位置來表示數據的邏輯結構;線性表的順序存儲方法:將表中的結點一次存放在計算機內存中一組連續的存儲單元中。
特色:1)預先分配好長度,須要預估存儲數據須要的存儲量
2)插入和刪除須要移動其餘元素
3)存取快捷,是隨機存取結構
鏈式存儲方式:數據元素地址的指針表示數據的邏輯結構
數據項|指針項
特色:
1)動態分配,不須要預先肯定內存分配
2)插入和刪除不須要移動其餘元素
3)非隨即存取結構
索引存儲方式:藉助索引表中的索引指示存儲節點的存儲位置
散列存儲方式:用散列函數知識各節點的存儲位置
運算就是指在某種邏輯結構上施加的操做,即對邏輯結構的加工
加工型運算:其操做改變原邏輯結構的值
引用型運算:其操做不改變原洛基結構的值
創建——查找——讀取——插入——刪除
算法規定了求解給定類所需的全部「處理步驟」以及執行順序,
使給定類型問題能在有限時間內被機械的求解
算法必須使用某種語言描述:
1.程序
2.介於天然語言和程序設計語言的僞代碼
3.非形式算法(天然語言)
4.框圖(N-S圖)
1.3算法描述
一個算法是對特定問題求解步驟的一種描述,它是指令有窮序列
算法具備如下特性:
1)有窮性 2) 肯定性 3)可行性 4)輸入 5)輸出
算法的設計應知足:
1)正確性:對於合法的輸入產生符合要求的輸出
2)易讀性:算法應該易讀、便於交流,這也是保證算法正確性的前提;
添加註釋也是一種增長可讀的辦法;
3)健壯性:當輸入非法時,算法還能作出適當的反應而不會崩潰,如輸出錯誤信息;
算法中應該考慮適當的錯誤處理;
4)時空性; 一個算法的時空性是指算法的世家複雜度和空間複雜度,算法分析主要分析算法的時間
複雜度和空間複雜度,目的是提升算法的效率。解決同一問題的算法能夠有多種。 咱們但願從中選出最優的算法,效率高或者存儲空間小。爲此,須要對算法進行評估,分析 。
一般考慮兩個度量:
❖ 時間複雜度: 算法運行時須要的總步數,通
常是問題規模的函數。
❖ 空間複雜度: 算法執行時所佔用的存儲空間,一般是問題規模的函數。