第二章:陣列結構
阿新 • • 發佈:2020-09-08
2.1 線性表簡介
1 線性表:
1)有序表可以是空集合,或者寫成(a1,a2,a3,......,an,an)
2)存在唯一的第一個元素a1和唯一最後一個元素an。
3)除了第一個元素a1外,每一個元素都有唯一的先行者。
4)除了最後一個元素an外,每一個元素都有唯一的後繼者。
2 線性表儲存結構:
靜態資料結構:也稱為“密集表”,它使用連續分配的記憶體空間來儲存有序表中的資料。(靜態資料結構是在編譯時就給相關的變數分配好記憶體空間。在建立靜態資料結構的初期,必須宣告最大可能要佔用的固定記憶體空間,因此容易造成記憶體浪費。優點:設計簡單,讀取與修改表中任意元素的時間是固定的。缺點:刪除或加入資料時,需要移動大量資料)
動態資料結構:也稱為“連結串列”,它使用不連續的記憶體空間儲存具有線性表特性的資料。(優點:資料的插入或刪除都相當方便,不需要移動大量資料。記憶體是在程式執行時才進行分配,所以不需要事先宣告,節省記憶體。缺點:設計資料結構麻煩,查詢資料時,無法像靜態資料一般可以隨機讀取,必須直到按順序找到改資料為止)
2.2 認識陣列
1 陣列型別的宣告:
1)起始地址:表示陣列名(或陣列第一個元素)所在記憶體中的起始地址。
2)維度:一維、二維、三維。
3)索引上下限:
4)陣列元素個數:是索引上限和索引下限的差加1。
5)陣列型別:宣告此陣列的型別,它決定陣列元素在記憶體所佔容量的大小。
程式1是記錄5個人分數,然後求平均值。
1 # 記錄5個人分數,然後求平均 2 #一維列表使用 3 Score = [87,66,90,65,70] 4 Total_Score = 0 5 for count in range(5): 6 print('第 %d 位學生的分數:%d' %(count+1,Score[count])) 7 Total_Score += Score[count] 8 print('--------------------------') 9 print('5位學生的總分:%d' %Total_Score)View Code
程式2表示的是輸入一個二維列表表示的二階行列式,並計算結果。
1 N = 2 2 # 宣告二維陣列 3 arr = [ [None]*N for row in range(N) ] 4 print('|a1 b1|') 5 print('|a2 a2|') 6 arr[0][0] = input('請輸入a1:') 7 arr[0][1] = input('請輸入b1:') 8 arr[1][0] = input('請輸入a2:') 9 arr[1][1] = input('請輸入b2:') 10 #求第二階行列式的值 11 result = int(arr[0][0]) * int(arr[1][1]) - int(arr[0][1])*int(arr[1][0]) 12 print('|%d %d|' %(int(arr[0][0]),int(arr[0][1]))) 13 print('|%d %d|' %(int(arr[1][0]),int(arr[1][1]))) 14 print('行列式值=%d' %result)View Code
程式3表示的找出2 X 3 X 3 三維陣列中儲存數值的最小值。
1 # 三維陣列 2 num = [ [ [33,45,67],[23,71,66],[55,38,66] ],\ 3 [ [21,9,15],[38,69,18],[90,101,89] ] ] 4 value = num[0][0][0] 5 print(num) 6 for i in range(2): 7 for j in range(3): 8 for k in range(3): 9 if(value>=num[i][j][k]): 10 value = num[i][j][k] 11 print("最小值= %d" %value)View Code