目錄
各自完成插入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 s
、64 s
;
二百萬、二千萬,我沒測試;但是,我測試一百萬我等了17
分鐘,沒跑完,然後我結束了執行,二千萬的資料 ,估計得按小時
算 ;
備註:我的cpu
是i7-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 首先我們先定義乙個陣列佇列,並在下面定義幾個對陣列的操作 在入佇列的操作中,需要有以下...