陣列和鍊錶插入效率比較

2021-08-20 10:15:17 字數 1045 閱讀 8989

陣列和鍊錶將物件插入指定位置時,大致可以分為兩個步驟:

1、找到要插入元素的位置

2、進行插入操作

可以得到等式:找到位置所需時間 + 插入所需時間 = 將物件插入指定位置所需總時間

由此可以先假設幾個值:

找到插入元素的位置涉及的變數:

要插入的位置為z

獲取乙個物件引用所需時間m

進行插入操作涉及的變數:

移動乙個物件所需的時間,陣列和鍊錶相同:x

陣列和鍊錶中的物件數為y

對於陣列:

移動元素所需時間 (插入所需時間):(y-z)x

對於鍊錶:

移動元素所需時間 (插入所需時間):2x

陣列公式->m+(y-z)x = t 中,m對t的影響因素很小,對其進行省略,可得:(y-z)x = t

鍊錶公式->m*z+2x = t 中,2x對t的影響因素很小,對其進行省略,可得:m*z = t

我們可以得出當陣列和鍊錶執行插入操作,所用時間相等時的式子:

(y-z)x = m*z

y/z      = m/x + 1

由於不同環境(不同的系統、應用等),m/x的比例不同,y/z也可能不同

這裡就假設m/x = 1,可得:

y/z = 2  ;  y/2 = z ;

就是說當執行插入操作的位置在物件總數的二分之一時,兩種容器插入元素所需的時間相等。

插入的位置在二分之一前時,陣列所需時間較多;

插入位置在二分之一後時,鍊錶所需時間較多。

當然,實際情況是,由於不同的計算機之間存在差異(獲取物件引用、移動物件等所需的時間不同),

陣列和鍊錶執行插入操作所需時間相等的點,並不固定。

就是說,由於實際情況不同,有可能執行插入操作的位置在3/4,但是陣列所用時間比鍊錶的多(如果x太大,或其他因素);

可能執行插入操作的位置在1/4,但是鍊錶所用時間比陣列的多(如果m太大,或其他因素)

注意:以上討論是在乙個前提下進行的,將物件插入指定位置!將物件插入指定位置!將物件插入指定位置!。

(不是按值查詢要插入物件的位置然後進行插入)

效率比較 鍊錶

單鏈表雙端鍊錶 有序鍊錶 雙向鍊錶 頭插o 1 o 1 頭刪o 1 o 1 尾插o 1 o 1 尾刪o n o 1 插入max o n min o n 2 刪除o 1 查詢結點 o n 次比較 無移動次數 刪除結點 o n 次比較 無移動次數 o n deletekey int i 指定結點後插入 ...

鍊錶用途 陣列效率 鍊錶效率 鍊錶優缺點

三大資料結構的實現方式 資料結構 實現方式 棧 陣列 單鏈表佇列 陣列 雙端鍊錶 優先順序佇列 陣列 堆 有序鍊錶 雙端佇列 雙向鍊錶 陣列與鍊錶實現方式的比較 陣列與鍊錶都很快 如果能精確 棧或者佇列所需要容納的資料量 陣列 如果不能 鍊錶 陣列的效率 無序陣列 有序陣列 查詢比較次數o n 比較...

陣列與鍊錶的比較,鍊錶的建立及其插入刪除

陣列與鍊錶均為線性表,即乙個元素的前繼或後驅只有乙個元素,為資料結構的基礎。其中陣列與鍊錶相比,陣列具有按索引查詢方便的特點,其查詢的時間複雜度為o 1 而鍊錶查詢時最壞情況時,所查元素位於鍊錶末端,需查詢n次,時間複雜度為o n 鍊錶則具有插入刪除方便的特點,無論在什麼位置插入,只需將將其next...