官术网_书友最值得收藏!

1.4 數組的應用

1.4.1 線性表的順序存儲

一維數組可用來實現線性表的順序存儲。

線性表的順序存儲又稱為順序表。其中,需分清線性表與順序表的概念。線性表的概念是一種邏輯結構,表示元素之間一對一的相鄰關系,而順序表和鏈表(后續章節介紹)是存儲結構。兩者屬于不同層面的概念,請不要將二者混淆。

注意:線性表中元素的位序是從1開始的,而數組中元素的下標是從0開始的。

順序表最主要的特點是可以進行隨機存取,即通過首地址和元素序號可以在O(1)的時間內找到指定的元素。但是插入和刪除操作需要移動大量元素。

在表長為n的順序表L中共有n+1個可以插入結點的地方。插入操作結點移動的次數不僅與表長n有關,而且與插入的位置i有關:

最好情況:在表尾插入,時間復雜度為O(1);最壞情況:在表頭插入,整個數組元素都將后移,時間復雜度為O(n);平均情況:假設pi(pi=1/(n+1))是在第i個位置上插入一個結點的概率,則在長度為n的順序表中插入一個結點時所需移動結點的平均次數為:

因此,順序表插入算法的平均時間復雜度為O(n)。

在表長為n的順序表L中共有n個可以被刪除的地方。

最好情況:刪除表尾元素,無須移動元素,時間復雜度為O(1);最壞情況:刪除表頭元素,需要移動除第一個元素外的所有元素,時間復雜度為O(n);平均情況:假設pi(pi=1/n)是刪除第i個位置上結點的概率,則在長度為n的順序表中刪除一個結點時所需移動結點的平均次數為:

因此,順序表刪除算法的平均時間復雜度為O(n)。

按值查找的最好情況:查找的元素就在表頭,僅需比較一次,時間復雜度為O(1)。最壞情況:查找的元素在表尾,需要比較n次,時間復雜度為O(n)。平均情況:假設pi(pi=1/n)是查找的元素在第i個位置上的概率,則在長度為n的順序表中查找值為e的元素所需比較的平均次數為:

因此,順序表按值查找算法的平均時間復雜度為O(n)。

例1:在n個結點的順序表中,算法的時間復雜度是O(1)的操作是______。(2012·騰訊)

A.訪問第i個結點(1<=i<=n)和求第i個結點的直接前驅(2<=i<=n)

B.在第i個結點后插入一個新結點(1<=i<=n)

C.刪除第i個結點(1<=i<=n)

D.將n個結點從小到大排序(1<=i<=n)

解答:A。

1.4.2 對稱矩陣的壓縮

若一個n階方陣A[1…n][1…n]中的任一個元素ai,j,都有ai,j=aj,i(1≤i,j≤n),則稱其為對稱矩陣。對稱矩陣可以壓縮然后存儲到一維數組中。

例1:將10階對稱矩陣壓縮存儲到一維數組A中,則數組A的長度最少為(  )。(2012·搜狗)

A.100

B.40

C.55

D.80

解答:C。10階對稱矩陣共有10×10個元素,壓縮到一維數組存儲時,需要存儲對角線以上或以下的元素共45個,加上對角線上的元素,共55個。

一維數組還可用來實現哈希表等,二維數組可用來保存圖的鄰接矩陣等,將在后續章節詳細講述。

主站蜘蛛池模板: 卢氏县| 鄂尔多斯市| 益阳市| 友谊县| 莱芜市| 安康市| 赤壁市| 南昌市| 沙田区| 大邑县| 安义县| 军事| 阳信县| 信宜市| 武胜县| 连南| 临潭县| 荃湾区| 百色市| 垫江县| 宜城市| 东兴市| 周口市| 花莲县| 班玛县| 鹿泉市| 福贡县| 永定县| 泾阳县| 罗江县| 泾阳县| 绥中县| 桦川县| 新昌县| 台前县| 兴宁市| 化德县| 通州市| 定南县| 铜梁县| 永福县|