數據結構~時間復雜度


返回目錄

常用數據結構的時間復雜度

程序的復雜度分為時間復雜度和空間復雜度,通過字面上可以看出它們的含義,下面我們主要來看一個集合的時間復雜度,這些集合基本包含了.net里的所有了,呵呵!

Data Structure Add Find Delete GetByIndex
Array (T[])

O(n)

O(n)

O(n)

O(1)

Linked list (LinkedList<T>)

O(1)

O(n)

O(n)

O(n)

Resizable array list (List<T>)

O(1)

O(n)

O(n)

O(1)

Stack (Stack<T>)

O(1)

-

O(1)

-

Queue (Queue<T>)

O(1)

-

O(1)

-

Hash table (Dictionary<K,T>)

O(1)

O(1)

O(1)

-

Tree-based dictionary

(SortedDictionary<K,T>)

 O(log n) 

 O(log n) 

 O(log n) 

-

Hash table based set (HashSet<T>)

O(1)

O(1)

O(1)

-

Tree based set (SortedSet<T>)

O(log n)

O(log n)

O(log n)

-

如何選擇數據結構

Array (T[])

  • 當元素的數量是固定的,並且需要使用下標時。

Linked list (LinkedList<T>)

  • 當元素需要能夠在列表的兩端添加時。否則使用 List<T>。

Resizable array list (List<T>)

  • 當元素的數量不是固定的,並且需要使用下標時。

Stack (Stack<T>)

  • 當需要實現 LIFO(Last In First Out)時。

Queue (Queue<T>)

  • 當需要實現 FIFO(First In First Out)時。

Hash table (Dictionary<K,T>)

  • 當需要使用鍵值對(Key-Value)來快速添加和查找,並且元素沒有特定的順序時。

Tree-based dictionary (SortedDictionary<K,T>)

  • 當需要使用鍵值對(Key-Value)來快速添加和查找,並且元素根據 Key 來排序時。

Hash table based set (HashSet<T>)

  • 當需要保存一組唯一的值,並且元素沒有特定順序時。

Tree based set (SortedSet<T>)

  • 當需要保存一組唯一的值,並且元素需要排序時。

鳴謝

本文原文由Dennis Gao 發表自博客園,本人只是收藏之

本文章來自:http://www.cnblogs.com/gaochundong/p/3813252.html

相關參考資料:

返回目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM