資料結構複習 0x0 基礎

2021-09-12 08:56:01 字數 974 閱讀 9110

邏輯結構與物理結構

邏輯結構:集合結構、線性結構、樹形結構、圖形結構

物理結構:順序儲存結構、鏈式儲存結構

資料型別:一組性質相同的值的集合及定義在此集合上的一些操作的總稱。

抽象資料型別(adt,abstract data type):是指乙個數學模型及定義在該模型上的一組操作。

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

演算法的特性:輸入,輸出,有窮性,確定性和可行性。

演算法設計的要求:正確性,可讀性,健壯性,時間效率高和儲存量低。

演算法時間複雜度:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度,也就是演算法的時間量度,記做:t(n)=o(f(n))。他表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。其中f(n)是問題規模n的某個函式。

推導大o階:

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

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

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

得到的結果就是大o階。

常見時間複雜度:

執行次數函式

階非正式術語

12o(1)

常數階2n+3

o(n)

線性階3n^2+2n+1

o(n^2)

平方階5log2n+20

o(logn)

對數階2n+3nlog2n

o(nlogn)

nlogn階

6n^3+2n^2+3n+4

o(n^3)

立方階2^n

o(2^n)

指數階常用的時間複雜度所耗費的時間從小到大:

o(1)< o(n)< o(n^2)< o(logn)< o(nlogn)< o(n^3)< o(2^n)

Linux下接收串列埠資料0x0d變0X0a問題

許多流行的linux串列埠程式設計的版本中都沒對c iflag termios成員變數 這個變數進行有效的設定,這樣傳送ascii碼時沒什麼問題,但傳送二進位制資料時遇到0x0d,0x11和0x13卻會被丟掉。不用說也知道,這幾個肯定是特殊字元,被用作特殊控制了。關掉icrnl和ixon選項即可解決...

資料結構筆記 0x01基礎

演算法 adt 抽象資料型別名 data 資料元素之間邏輯關係的定義 operation 操作1初始條件 操作結果描述 操作2.操作n.endadt 解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。判斷演算法的效率時,函式中的常數和其他次要項常常可以忽略而...

資料結構 前言(0)

為什麼學習資料結構?資料結構作為構建高效演算法的必要基礎,在電腦科學領域中,起到了技術體系的基石的作用。而其中涉及的知識,在相關專業的課程系統中也始終處於核心位置。以acm ieee computing curricula 計算機教學大綱 2005年版為例,其中對於幾個相關專業 電腦科學,計算機工程...