目錄1.3什麼是演算法?
1.4演算法初體驗
官方解釋:
資料結構是一門研究非數值計算的程式設計問題中的操作物件, 以及他們之間的關係和操作等相關問題的學科。
大白話:
資料結構就是把資料元素按照一定的關係組織起來的集合, 用來組織和儲存資料
傳統上,我們可以把資料結構分為邏輯結構和物理結構兩大類。
邏輯結構分類:
邏輯結構是從具體問題中抽象出來的模型,是抽象意義上 的結構,按照物件中資料元素之間的相互關係分類。
a.集合結構:集合結構中資料元素除了屬於同乙個集合外,他們之 間沒有任何其他的關係。
b.線性結構:線性結構中的資料元素之間存在一對一的關係
c.樹形結構:樹形結構中的資料元素之間存在一對多的層次關係
d.圖形結構:圖形結構的資料元素是多對多的關係
物理結構分類:
邏輯結構在計算機中真正的表示方式(又稱為映像)稱為物理結構, 也可以叫做儲存結構。常見的物理結構有順序 儲存結構、鏈式儲存結構。
順序儲存結構:
把資料元素放到位址連續的儲存單元裡面,其資料間的邏 輯關係和物理關係是一致的 ,比如我們常用的陣列就是 順序儲存結構。
順序儲存結構存在一定的弊端,就像生活中排時也會有人插隊也可 能有人有特殊情況突然離開,這時候整個結構都 處於變化中,此時就需要鏈式儲存結構。
鏈式儲存結構:
是把資料元素存放在任意的儲存單元裡面,這組儲存單元可以是連續的也可以是不連續的。此時,資料元素之間並 不能反映元素間的邏輯關係,因此在鏈式儲存結構中引進了乙個指標存放資料元素的位址,這樣通過位址就可以找 到相關聯資料元素的位置。
官方解釋:
演算法是指解題方****而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。
大白話:
根據一定的條件,對一些資料進行計算,得到需要的結果。
乙個優秀的演算法追求以下兩個目標:
1.花最少的時間完成需求;
2.占用最少的記憶體空間完成需求;
需求1:
計算1到100的和。
第一種解法:
public static void main(string args)
system.out.println("sum=" + sum);
}
第二種解法:
public static void main(string args)
需求2: 計算10的階乘第一種解法要完成需求,要完成以下幾個動作:
1.定義兩個整型變數;
2.執行100次加法運算;
3.列印結果到控制台;
第二種解法要完成需求,要完成以下幾個動作:
1.定義兩個整型變數;
2.執行1次加法運算,1次乘法運算,一次除法運算,總共3次運算;
3.列印結果到控制台;
很明顯,第二種演算法完成需求,花費的時間更少一些。
第一種解法:
public class test
//計算n的階乘
public static long fun1(long n)
return n*fun1(n-1);}}
第二種解法:
public class test
//計算n的階乘
public static long fun2(long n)
return result;}}
第一種解法,使用遞迴完成需求,fun1方法會執行10次,並且第
一次執行未完畢,呼叫第二次執行,第二次執行
未完畢,呼叫第三次執行...最終,最多的時候,需要在棧記憶體同
時開闢10塊記憶體分別執行10個fun1方法。
第二種解法,使用for迴圈完成需求,fun2方法只會執行一次,
最終,只需要在棧記憶體開闢一塊記憶體執行fun2方法
即可。很明顯,第二種演算法完成需求,占用的記憶體空間更小。
(一)資料結構與演算法概述
資料結構 對計算機記憶體中的資料的一種安排。演算法 對結構中資料進行各種處理 應用方面 1.現實世界資料儲存 2.程式設計師的工具 3.現實世界的建模 資料結構 優點 缺點 陣列 插入快 知道下標 查詢慢,刪除慢,大小固定 有序陣列 比無序的陣列查詢快 刪除和插入慢,大小固定 棧 提供後進先出的訪問...
一 資料結構概述
資料結構定義 我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能而執行的相應的操作 比如查詢某個元祖,刪除某個元素,對某個元素進行排序 這個相應的操作也叫作演算法。資料結構 個體 個體的關係 演算法定義 結題的方法和步驟 演算法 ...
資料結構與演算法(一) 資料結構與演算法概念
資料結構是計算機儲存 組織資料的方式。資料結構是指資料與資料之間的關係。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。邏輯結構 示意圖1 集合結構 2 線性結構 3 樹形結構 4...