一 資料結構
1.概念
資料結構就是資料之間的結構關係,或者理解成資料元素之間存在的一種或者多種特定關係的集合,在傳統上資料結構分為邏輯結構與物理結構
(1)邏輯結構: 只反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後關係,而與他們在計算機中的儲存位置無關,有以下四類:
集合結構:資料元素同屬於乙個集合,他們之間是並列關係,除此之外沒有其他關係.
線性結構: 元素存在一對一的相互關係.
樹形結構:元素中存在一對多對的相互關係
圖形結果:元素中存在多對多的關係
(2)物理結構:資料的邏輯結構在計算機儲存空間的存放形式,分為2中結構
順序儲存結構:是指資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係與物理關係一直,陣列就是順序儲存結構的典型代表
鏈式儲存結構:是指數組元素存放在記憶體中的任意儲存單元裡,也就是可以吧陣列存放在記憶體的各個位置,這些元素在記憶體中可以是連續的也可是不連續的.
區別:簡單的例子可以理解: 去銀行取錢,每人按照順序坐在大廳的椅子上,按照順序來,這樣是順序的儲存結構,但是大堂經理給每個人乙個號碼,大家隨便坐,只按照號碼的順序,這樣的就是鏈式儲存結構
二 演算法
1.概念
是指階梯方****而完整的描述,是一系列解決問題的清晰指令,演算法代表用系統的方法解決問題的策略機制,在n中演算法中,肯定存在乙個執行效率最快的方法,那個這個方法就是最優演算法
2.特性
輸入,輸出,有窮行,確定性和可行性(簡單明瞭就不贅言了)
3.設計要求
正確性,可讀性,健壯性,時間效率高和儲存量低
4.演算法效率的度量方法
(1)時間複雜度:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級時間複雜度幾座t(n) = o(f(n)).常見的時間複雜度有o(1)<(logn)*n)*
n*n)
eg :一般來說單次迴圈是o(n) 雙層迴圈可能是o(n*n)
// 對數階
int i = 1, n = 100;
while( i < n )
由於每次i*2之後,就距離n更近一步,假設有x個2相乘後大於或等於n,則會退出迴圈。於是由2^x = n得到x = log(2)n,所以這個迴圈的時間複雜度為o(logn)。
空間複雜度:複雜度不做特別說明的情況下,就是指時間複雜度。現在的硬體發展速度之快使得我們完全可以不用考慮演算法所佔的記憶體,通常都是用空間 換取時間。
資料結構和演算法
判斷乙個演算法的效率時,函式中的常數和其它次要項常常可以忽略,而更應該關注主項 最高項 的階數。演算法時間複雜度的定義 在進行演算法分析時,語句中的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t n 的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作 t n ...
資料結構和演算法
程式是什麼?好多書上都寫著 程式 資料結構 演算法。可是怎麼去理解呢?好多程式設計人員對資料結構和演算法說不上熟悉,因為在他們所從事的工作中很少用到這些知識點。但並不表示他們不重要。還有一些人是這樣的想法 大公司才會注重這些知識點,小公司可能就不注重了。寫這篇文章之前我也是持這種想法的。但是,此時此...
資料結構和演算法
資料結構和演算法 什麼是資料結構 概念 官方定義 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。我的理解 程式設計 資料結構 演算法 常用結構 陣列 在程式設計中,為了處理方便,把具有相同型別的若干 變數 按有序的形式組織起來。這些按序排列的同類資...