1. 程式人生 > >資料結構(JAVA描述)的學習_01_18/11/4

資料結構(JAVA描述)的學習_01_18/11/4

1.1資料結構的基本概念

1、資料元素和資料項的概念
表示一個事物的一組資料就是一個__資料元素__;構成資料元素的資料稱作該資料元素的__資料項__

學生資訊的例子

學號 姓名 性別 年齡
001 張三 20
002 李四 21

學生資訊中的學號、姓名、性別、年齡就是資料元素。 其中一組學號、姓名、性別、年齡就是一個學生資訊資料元素。

2、資料的邏輯結構
資料元素之間的相互聯絡的方式就稱為__資料的邏輯結構__。
1、線性結構__除第一個和最後一個數據元素之外,每個元素只有1個前驅資料元素和1個後繼資料元素。
2、樹狀結構__除了根節點室外,每個資料元素有一個前驅資料元素和0個或者多個後繼元素。
3、圖結構__每個資料元素有0個或者多個前驅資料元素和0個或者多個後繼元素。
3、資料的儲存結構
資料元素在計算機中的儲存方式稱為資料的儲存結構
1、順序儲存結構
2、鏈式儲存結構
3、資料的操作

1.2抽象資料型別

1.3演算法和演算法的時間複雜度

1、演算法

兩個例子

/**
*陣列的反轉
*/
static void reverse01(int[] a,int[] b) {
	for(int i = 0;i < a.length;i++) {
		b[i] = a[a.length - 1 - i]
	}
}
/**
*陣列的就地反轉
*/
static void reverse01(int[] a) {
	int n = a.length;
	int m = n/2;
for(int i = 0;i < m;i++) { int temp = a[i]; a[i] = a[n - 1 - i]; a[n - 1 - i] = temp; } }
2、演算法的性質
演算法的5個性質:
1、輸入性__0個或者多個輸入
2、輸出型__1個或者多個輸出
3、有限性(有窮性)__不能是死迴圈
4、確定性__相同的輸入只能有唯一的輸出結果
5、可執行性__不能有錯誤
3、演算法的時間複雜度分析
常用的時間複雜度耗費的時間排序
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)