Difference between revisions of "Template:List data structure comparison"

From blackwiki
Jump to navigation Jump to search
imported>Kxx
imported>StanyTse
Line 14: Line 14:
 
|style="background:#ddffdd"|Θ(1)
 
|style="background:#ddffdd"|Θ(1)
 
|style="background:#ffffdd"|Θ(log n)
 
|style="background:#ffffdd"|Θ(log n)
|style="background:#ffffdd"|Θ(log n)
+
|style="background:#ffffdd"|Θ(1)
 
|-
 
|-
 
|{{nowrap|Insert/delete}} at beginning
 
|{{nowrap|Insert/delete}} at beginning

Revision as of 08:35, 9 September 2015

Comparison of list data structures
Linked list Array Dynamic array Balanced tree Random access list
Indexing Θ(n) Θ(1) Θ(1) Θ(log n) Θ(1)
Insert/delete at beginning Θ(1) N/A Θ(n) Θ(log n) Θ(1)
Insert/delete at end Θ(n) when last element is unknown;
Θ(1) when last element is known
N/A Θ(1) amortized Θ(log n) Θ(log n) updating
Insert/delete in middle search time + Θ(1)[1][2][3] N/A Θ(n) Θ(log n) Θ(log n) updating
Wasted space (average) Θ(n) 0 Θ(n)[4] Θ(n) Θ(n)

References

  1. Gerald Kruse. CS 240 Lecture Notes: Linked Lists Plus: Complexity Trade-offs. Juniata College. Spring 2008.
  2. Day 1 Keynote - Bjarne Stroustrup: C++11 Style at GoingNative 2012 on channel9.msdn.com from minute 45 or foil 44
  3. Number crunching: Why you should never, ever, EVER use linked-list in your code again at kjellkod.wordpress.com
  4. Brodnik, Andrej; Carlsson, Svante; Sedgewick, Robert; Munro, JI; Demaine, ED (1999), Resizable Arrays in Optimal Time and Space (Technical Report CS-99-09) (PDF), Department of Computer Science, University of Waterloo