資料結構(JAVA描述)的學習_01_18/11/4
阿新 • • 發佈:2018-12-19
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)