(四)迴圈佇列 VS 陣列佇列 (效率對比)

2022-06-30 19:00:15 字數 1635 閱讀 6651

目錄

各自完成插入10萬、20萬條隨機數,然後再將這些隨機數出佇列 ;

/**

* 測試速度

*/public string testspeed(queuequeue, int num)

for (int i = 0; i < num; i++)

long end = system.currenttimemillis();

return (end - start) / 1000.0 + " s";

}@test

public

void

test()

從列印的時間看,二者的差距是天壤之別

迴圈佇列在完成 10萬、20萬 資料 入列、出列的時候,均在1 s之內 ;

測試二百萬的時間是0.8 s二千萬資料,時間在28 s

陣列佇列在完成 10萬、20萬 資料 入列、出列的時候,分別使用16 s64 s

二百萬二千萬,我沒測試;但是,我測試一百萬我等了17分鐘,沒跑完,然後我結束了執行,二千萬的資料 ,估計得按小時算 ;

備註:我的cpui7-4710mq,具體測試,跟cpu型號有關 ;

之前實現的動態陣列佇列其實本質上都是靜態的, 底層都是利用靜態陣列建立的,我們需要考慮,什麼時候擴容,什麼時候縮小

鍊錶,是真正的動態結構,它根本不需要去考慮擴容 、縮小,因為它本身就是動態的變化著 ;

但是鍊錶也有缺點,由於底層不再是利用靜態陣列實現的,因此,喪失了隨機訪問能力 ;

因為靜態陣列底層開闢的記憶體,是連在一起的,可以根據下標,直接計算出偏移量,直接去訪問對應位址的記憶體 ;

鍊錶由於是動態的變化的,它的節點之間,是通過引用相互連線在一起的 ,是無法直接計算出某乙個節點的記憶體位址的,因此,也就不具備隨機訪問了;

陣列佇列和迴圈陣列佇列

public class arrayqueuedemo catch exception e break case h trycatch exception e break system.out.println 程式退出 使用陣列模擬arrayqueue類 class arrayqueue 判斷佇列是...

陣列佇列和迴圈佇列

定義乙個queue的介面 public inte ce queue引入之前自定義的動態陣列array類 出隊時間複雜度是o n 其餘為o 1 public class arrayqueue implements queue public arrayqueue override public int ...

2 迴圈陣列佇列

是一種資料結構,遵守著 先進先出 的原則,是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表,有點類似我們生活排隊的操作,而這次我們在這裡討論的是以陣列為原型組成的 佇列 class arrayqueue 首先我們先定義乙個陣列佇列,並在下面定義幾個對陣列的操作 在入佇列的操作中,需要有以下...