1. 程式人生 > >資料結構——線性表總結

資料結構——線性表總結

1、線性表

1、1 順序表的效率分析

       順序表上的插入和刪除是順序表中時間複雜度最高的部分。在順序表中插入一個數據元素時,主要的耗時部分是迴圈移動資料元素部分。迴圈移動資料元素的效率和插入資料元素的位置i有關。最壞情況是i=0,需要移動size個數據元素;最好情況是i=size,需要移動0個元素。設 p i 是第i個儲存位置插入一個數據元素的概率設順序表中資料元素的個數為n,當在順序表的任何位置上插入資料元素的概率相等時,有 p i =1/(n+1),則向順序表插入一個數據元素需要移動的資料元素的平均次數為:

       在順序表中刪除一個元素時,主要的耗時部分也是迴圈移動資料元素。迴圈移動資料元素的效率和刪除資料元素的位置i有關。最壞情況是i=0,需要移動size-1個數據元素;最好情況是i=size,需要移動0個元素。設qi是刪除第i個儲存位置資料元素的概率,則順序表中的資料元素個數為n,當刪除順序表任何位置上資料元素的概率相等時,有qi=1/n,則刪除順序表中一個數據元素所需移動資料元素的平均次數為:
       因此,在順序表中插入和刪除一個數據元素的時間複雜度是O(n)。順序表中的其餘操作都和資料元素個數n無關,因此,順序表中取元素和其他操作的時間複雜度是O(1)。
總結:順序表的主要優點是:取資料元素操作的時間效率高,記憶體空間利用效率高。            順序表的主要缺點是:插入和刪除操作時需要移動較多的資料元素。

1、2 單鏈表的效率分析

       單鏈表的插入和刪除操作的時間效率分析方法和順序表的插入和刪除操作的時間效率分析情況類似。因此,當在單鏈表的任何位置插入資料元素的概率相等時,在單鏈表中插入一個數據元素時比較資料元素的平均次數為:
       刪除單鏈表的一個數據元素時比較資料元素的平均次數為:

       因此,單鏈表插入和刪除操作的時間複雜度為 O(n)。另外,單鏈表取資料元素的時間複雜度也為O(n)。

1、3 順序表和單鏈表的比較

        順序表和單鏈表完成的邏輯功能完全一樣,但兩者的應用背景及不同情況下的使用效率還是有所差別。        順序表的主要優點是支援隨機讀取以及記憶體空間利用效率高;順序表的主要缺點是插入和刪除操作時需要移動較多的資料元素。        和順序表相比,單鏈表的主要優點是插入和刪除操作時不需要移動資料元素。單鏈表的主要缺點是每個節點中要有一個指標,因此單鏈表的空間利用率略低於順序表。另外,單鏈表不支援隨機讀取,單鏈表取資料元素操作的時間複雜度為 O(n);而順序表取資料元素操作的時間複雜度為O(1)。