基本泛型資料結構

2022-02-20 18:45:33 字數 958 閱讀 9533

資料結構:

電腦程式的靈魂

資料結構選取的好壞直接決定了演算法效率的高低和實現的複雜程度

資料結構的組織與訪問特性,決定了演算法的選取與實現

list

用陣列儲存資料

-資料項查詢複雜度為o(n)

-下標查詢複雜度為o(1)

當資料空間不夠時,擴大1陪空間

將資料從原有緩衝區複製到新的緩衝區中

帶來o(n)的資料複製開銷

最壞可能帶來sizeof(t)*(n-1)的空間浪費 可以使用trimexcess來縮緊

插入資料時最壞可能會帶來n-1次資料複製

-小心insertrange裡面的效率陷阱 對於非system.generic.icollection集合的操作

-用insert插入多個資料可能會導致效率低下。

當刪除資料時最壞可能帶來n-1次資料複製,

removeat,removerange,removeall的複雜度在同乙個數量級上

對於一組資料的刪除迴圈呼叫removeat效率最低。

提供quicksort排序和二分查詢的方法。

物件在列舉操作時不能夠被修改。

非執行緒安全,在多執行緒環境中需要競爭條件保護。

構建lock-free的list

sortedlist

key與value分別儲存在二個陣列中,

key在陣列中有序排列,保證k,v陣列中的下標相同

當資料空間不夠時,擴大1倍空間

將資料從原有緩衝區複製到新的緩衝區中

帶來o(n)的資料複製開銷

最壞可能帶來sizeof(t)*(n-1)的空間浪費,可以使用trimexcess來縮緊

以key檢索資料時複雜度為o(log2n)

採用二分法查詢

在新增/插入資料時會先通過二分查詢定位

對原有緩衝區的部分資料進行移動,最壞情況下需要移動n-1個元素

非執行緒安全。

資料結構之java泛型

雖然該賬號已經申請很長一段時間,每次找資料,csdn上的小夥伴所提供的資訊總能幫我大忙 時間久了,感覺自己只是乙個消費者,並沒有做出一點點貢獻。最近,腦子一熱,買了乙個資料結構與演算法分析,第一小節看的就是泛型,回頭想想,好像大學裡學的演算法都是以這種泛型方法展示的,廢話不多說,自己總結一丟丟。1....

資料結構 泛型陣列的使用

我們採用inte ce的方法來進行定義 public inte ce mylist 在這個裡面定義了乙個泛型的介面,我們在呼叫的時候可以使用任意型別 mylist 在尖括號裡面是乙個型別的宣告,這裡可以填寫任意值。在這個介面中我們定義了三個函式,分別為新增元素,獲取陣列大小,返回某乙個位置的元素。p...

《資料結構與演算法》之泛型 使用介面型別表示泛型

如 考慮再由一些項組成的陣列中找出最大項的問題。基本的 是型別無關的,但是它需要一種能力來比較任意兩個物件。因此,不能直接找出object的陣列中的最大元素 我們需要更多的資訊。最簡單的方法就是找出comparable的陣列中的最大元。要確定順序,可以使用compareto方法,它對所有的compa...