数据结构课上笔记2
今天繼續說明了一些基本概念,講解了時間空間復雜度。
(對于概念的掌握也很重要)
?
元素之間的關系在計算機中有兩種表示方法:順序映像和非順序映像,由此得到兩種不同的儲存結構:
順序存儲結構和鏈式存儲結構。
?
順序:根據元素在存儲器中的相對位置表示關系
鏈式:借助指針表示關系
?
數據類型:是一個值的集合和定義在這個值集上的一組操作的總稱。
抽象數據類型:是指一個數學模型以及定義在該模型上的一組操作。(僅僅取決于邏輯特性,與其在計算機內部如何表示和實現無關)
?
定義抽象數據類型的一種格式:
ADT name{
數據對象:<>
數據關系:<>
基本操作:<>
}ADT name
?
算法:是對特定問題求解步驟的一種描述。
算法五個特性:
?
設計要求:正確性、可讀性、健壯性、效率與低存儲量需求。
執行頻度概念:是指通過統計算法的每一條指令的執行次數得到的。
執行頻度=算法中每一條語句執行次數的和
一般認定每條語句執行一次所需時間為單位時間(常數時間)O(1)
?
幾個小知識和小問題:
1)循環執行次數n+1次,不是n次。第一次執行i=1和判斷i<=n以后執行n次判斷和i++。所以該語句執行了n+1次。在他的控制下,循環體執行了n次。
2)四個并列程序段:分別為O(N),O(N^2),O(N^3),O(N*logN),整個程序時間復雜度為O(N^3),因為隨著N的增長,其它項都會忽略
3)算法分析的目的是分析算法的效率以求改進
4)對算法分析的前提是算法必須正確
5)原地工作指的不是不需要空間,而是空間復雜度O(1),可能會需要有限幾個變量。
實現統一功能兩種算法:時間O(2^N),O(N^10),假設計算機可以運行10^7秒,每秒可執行基本操作10^5次,問可解問題規模各為多少?選哪個更為合適?
計算機一共可執行10^7*10^5=10^12次
第一種:n=log2,(10^12)=12log(2,10)
第二種:n=(10^12)^0.1
顯然1更適用。
雖然一般情況多項式算法比指數階更優
總結
- 上一篇: C++中volatile关键字
- 下一篇: 链表排序-归并