中國簡單快捷的免費行業信息發布平臺
·手機版 ·注冊 ·登錄 ·會員中心 ·忘了密碼 ·導航 ·幫助
名站在線LOGO
·設 為 首 頁
·收 藏 本 站
·新 站 登 錄
網站首頁
|
行業供求
|
行業產品
|
行業公司
|
站內檢索
|
行業資訊
|
網站導航
|
鏈接交換
|
流量交換
|
網友收藏
您當前的位置: 首頁 > 行業貼吧 > 話題


行業貼吧

(注意:網友的發布表不代表本站立場。)
回復話題
發新話題
返回列表
話題: 數據結構類型的優缺點分析
183.17.228.*
2020-07-02 13:28:18
  數據結構是指相互之間存在著一種或多種關系的數據元素的集合和該集合中數據元素之間的關系組成。常用的數據結構有:數組,棧,鏈表,隊列,樹,圖,堆,散列表等。而今天我們就再來了解一下,數據結構的常見類型與優缺點分析。







  數據結構的常見類型與優缺點分析





  1.列表(List)





  元素有放入順序,元素可重復。





  數組實現(Vector類)





  同樣基于數組實現,會在內存中開辟一塊連續的空間來存儲。ArrayList是非線程安全的,效率高;Vector是基于線程安全的,但效率低,并且是方法級別的同步,不是**的線程安全。





  初始容量10,每次數組擴展到原來容量的2倍(每次擴充的容量大小是可以設置的,而ArrayList類不支持設定)。





  鏈表實現(LinkedList類)





  每一個元素存儲本身數據的同時還存儲上、下兩個元素的地址(雙向鏈表)。





  優點:





  新項的插入和現有項的刪除平均開銷很小O(1)(假設變動項的位置已知),因此提供了addFirst和removeFirst,addLast和removeLast,getFirst和getLast等**添加、刪除和訪問兩端的項的方法;





  可以在非連續的內存空間里面存儲一個集合的元素;





  缺點:





  根據索引的訪問時間復雜度為O(n);





  存放相同多的數據,一般情況下,數組占用較小的內存,而鏈表還需要存放其前驅和后繼的空間。





  2.棧(Stack)





  棧,在計算機中運用廣泛,比如說JVM,它就是基于棧來執行指令的。棧是限制插入和刪除只能在一個位置上進行的表,該位置是表的末端,叫作棧頂,對棧的基本操作有push(進棧)和pop(出棧),前者相當于插入,后者相當于刪除后一個元素。棧有時又叫作LIFO(LastInFirstOut)表,即后進先出。





  棧一般有兩種實現,所有操作時間復雜度O(1):





  棧的鏈表實現:利用LinkedList類,通過表頂端的元素插入和刪除。





  棧的數組實現:模仿ArrayList類,和棧相關的有兩個元素,arrayList數組和topOfStack索引,初始狀態topOfStack==-1,每次進棧一個元素x,topOfStack增1并令arrayList[topOfStack]=x;每次出棧一個元素,我們置返回值arrayList[topOfStack],并令topOfStack減1。





  3.隊列(Queue)





  對于隊列來說,元素只能從隊列尾插入,從隊列頭訪問和刪除。普通的隊列是一種先進先出(FirstInFirstOut,FIFO)的數據結構,而優先隊列中,元素被賦予優先級。當訪問元素的時候,具有高優先級的元素先被刪除。





  隊列也是表,一般有兩種實現,所有操作時間復雜度O(1)(優先隊列是通過大頂堆或者小頂堆實現):





  隊列的鏈表實現:利用LinkedList類,通過表尾端插入元素,前端刪除元素,并記錄隊列中元素個數currentSize。





  隊列的數組實現:保留一個數組theArray以及位置front和back,代表隊列的兩端;同時還要記錄隊列中元素個數currentSize。要使一個元素x入隊,則currentSize和back增1,theArray[back]=x;要使一個元素出隊,我們置返回值theArray[front],且currentSize減1,、front增1。采用循環數組的方式,當front和back到達數組的尾端,他們又繞回開頭。





  4.集合(Set)





  元素無放入順序,元素不可重復(注意:元素雖然無放入順序,但是元素在set中的位置是由該元素的HashCode決定的,其位置其實是固定的)





  Set接口有兩個實現類:HashSet和LinkedHashSet





  HashSet:(底層由HashMap實現),HashSet類按照哈希算法來存取集合中的對象,存取速度比較快,存入HashSet的對象必須定義hashCode()和equals()來確保對象的性。





  LinkedHashSet:具有HashSet的查詢速度,且內部使用鏈表維護元素的順序(插入的次序)。于是在使用迭代器遍歷Set時,結果會按元素插入的次序顯示。





  SortedSet接口有一個實現類:TreeSet底層是通過TreeMap來實現的(如同HashSet底層是是通過HashMap來實現的一樣),因此二者的實現方式幾乎完全一樣。





  數據結構類型的優缺點分析.針對各行業運營發展中面臨的業務挑戰,中琛魔方(www.zcmorefun.com)提供了豐富的行業應用數據分析方案,幫助企業提升企業資產效益,從而創造更多的商業價值。
共0個回復
回復話題
發新話題
返回列表



新站登錄--網站簡介--流量交換--名站收藏夾--廣告服務--友情鏈接--免責聲明--聯系我們--意見建議--違法舉報--侵權舉報
Copyright 2005-2025 名站在線[fwol.cn]版權所有 經營許可證:粵ICP備17047754號








国产乱人伦精品一区二区人妖,亚洲精品欧美中文字幕,91精品一区二区三区久久久久,国产精品国产自在国产足浴
亚洲AV午夜福利精品喷潮 | 热久久国产欧美一区二区精品 | 思思热国产视频观看 | 日本在线亚州精品视频在线 | 亚洲天堂在线视频观看综合网 | 中文字幕一区二区三区在线观看 |