1. 程式人生 > 其它 >一、資料結構與演算法分析(Java)

一、資料結構與演算法分析(Java)

1.1 什麼是資料結構

  • 官方解釋:

資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。

  • 大白話:

資料結構就是把資料元素按照一定的關係組織起來的集合,用來組織和儲存資料

1.2 資料結構的分類

傳統上我可以把資料結構分為:邏輯結構物理結構兩大類。

  • 邏輯結構分類:

邏輯結構是從具體問題中抽象出來的模型,是抽象意義上的結構,按照物件中資料元素之間的相互關係分類。

a.集合結構∶集合結構中資料元素除了屬於同一個集合外,他們之間沒有任何其他的關係。

b.線性結構︰線性結構中的資料元素之間存在一對一的關係。

c.樹形結構∶樹形結構中的資料元素之間存在一對多

的層次關係。

d.圖形結構∶圖形結構的資料元素是多對多的關係。

  • 物理結構(儲存結構)

邏輯結構在計算機中真正的表示方式(又稱為映像)稱為物理結構,也可以叫做儲存結構。常見的物理結構有順序儲存結構、鏈式儲存結構

a.順序儲存結構:把資料元素放到地址連續的儲存單元裡面,其資料間的邏輯關係和物理關係是一致的,比如我們常用的陣列就是順序儲存結構。

b.鏈式儲存結構:是把資料元素存放在任意的儲存單元裡面,這組儲存單元可以是連續的也可以是不連續的。此時,資料元素之間並不能反映元素間的邏輯關係,因此在鏈式儲存結構中引進了一個指標存放資料元素的地址,這樣通過地址就可以找到相關聯資料元素的位置。

  • 順序儲存與鏈式儲存的對比
順序儲存結構 鏈式儲存結構
優點 查詢 插入和刪除
缺點 插入和刪除 查詢

1.3 什麼是演算法

  • 官方解釋:

演算法是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。

  • 大白話:

根據一定的條件,對一些資料進行計算,得到需要的結果。

  • 優秀演算法的目標

1、花最少的時間完成需求,(時間複雜度

2、佔用最少的記憶體空間完成需求(空間複雜度

1.4 演算法初體驗

  • 簡單案例:計算1到100的和。
// 方法一
public static void main(String[] args){
    int sum = 0;
    int n = 100;
    for(int i = 1; i < n; i++){
        sum = sum + i;
    }
    System.out.println("sum"+sum);
}

// 法方二
public static void main(String[] args){
    int sum = 0;
    int n = 100;
    sum = (n+1)*n/2;
    System.out.println("sum"+sum);
}
/*
	明顯看出,方法一的時間複雜度為O(n)
	方法二的時間複雜度為O(1)
	方法二較好
*/