《大話數據結構》讀書筆記(一)-預備知識

預備知識,主要是《大話數據結構》1、2章內容,主要是數據結構和算法的一些基本知識,其中最重要的是算法的時間複雜度計算

數據結構

程序設計=數據結構+算法

數據結構的基本概念

數據

描述客觀事物的符號, 計算機中可操作的對象,能被計算機識別,並輸入給計算機處理的符號集合

數據元素

組成數據的、有一定意義的基本單位,在計算機中通常作爲整體處理,也被稱爲記錄

數據項

一個數據可由若干個數據項組成
數據項是數據不可分割的最小單位

數據對象

性質相同的數據元素的集合,是數據的子集

數據結構

相互之間存在一種或多種特定關係的數據元素的集合

邏輯結構與物理結構

邏輯結構

數據對象中數據元素之間的相互關係

物理結構

數據的邏輯結構在計算機中的存儲形式

抽象數據類型

數據類型

一組性質相同的值的集合及定義在此集合上的一些操作的總稱

抽象數據類型

一個數學模型及定義在該模型上的一組操作
描述抽象數據類型

算法

算法的基本概念

一般定義

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

算法特性

輸入輸出
有窮性
確定性
可行性

算法設計的要求

正確性
可讀性
健壯性
時間效率高和存儲量低

算法效率的度量

事後統計

事前分析估算

算法的時間複雜度

在進行算法分析時,語句總執行次數T(n)是關於問題規模n的函數,進而分析T(n)隨n的變化情況並確定T(n)的數量級。算法的時間複雜度,也就是算法的時間量度,記作:T(n)= O(f(n)),f(n)是問題規模n的某個函數。

推導大O階方法

1.用常數1取代運行時間中的所有加法常數。
2.在修改後的運行次數函數中,只保留最高階項。
3.如果最高階項存在且不是1,則去除與這個項目相乘的常數。得到的結果就是大O階。

常見的時間複雜度

常見時間複雜度,所消耗的時間從小到大
O(1)<O(logn)<O(n)<O(nlogn)<O(n2) <O(n3)<O(2n) <O(n!)<O(nn)

常用排序算法的時間複雜度在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章