Difference between revisions of "Template:List data structure comparison"
Jump to navigation
Jump to search
imported>Mikeblas (use unique name for reference to avoid duplication at transclusion; add category) |
|||
| 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)<ref name=" | + | |style="background:#ffffdd"|Θ(log n)<ref name="okasakiComparison">{{cite journal |
|title=Purely Functional Random-Access Lists | |title=Purely Functional Random-Access Lists | ||
|author=Chris Okasaki | |author=Chris Okasaki | ||
| Line 37: | Line 37: | ||
|style="background:#ddffdd"|Θ(1) [[Amortized analysis|amortized]] | |style="background:#ddffdd"|Θ(1) [[Amortized analysis|amortized]] | ||
|style="background:#ffffdd"|Θ(log ''n'') | |style="background:#ffffdd"|Θ(log ''n'') | ||
| − | |{{n/a}} <ref name=" | + | |{{n/a}} <ref name="okasakiComparison"/> |
|style="background:#ddffdd"|Θ(1) [[Amortized analysis|amortized]] | |style="background:#ddffdd"|Θ(1) [[Amortized analysis|amortized]] | ||
|- | |- | ||
| Line 45: | Line 45: | ||
|style="background:#ffdddd"|Θ(''n'') | |style="background:#ffdddd"|Θ(''n'') | ||
|style="background:#ffffdd"|Θ(log ''n'') | |style="background:#ffffdd"|Θ(log ''n'') | ||
| − | |{{n/a}} <ref name=" | + | |{{n/a}} <ref name="okasakiComparison"/> |
|style="background:#ffdddd"|Θ(''n'') | |style="background:#ffdddd"|Θ(''n'') | ||
|- | |- | ||
| Line 51: | Line 51: | ||
|style="background:#ffdddd"|Θ(''n'') | |style="background:#ffdddd"|Θ(''n'') | ||
|style="background:#ddffdd"|0 | |style="background:#ddffdd"|0 | ||
| − | |style="background:#ffdddd"|Θ(''n'')<ref | + | |style="background:#ffdddd"|Θ(''n'')<ref>{{Citation | title=Resizable Arrays in Optimal Time and Space (Technical Report CS-99-09) | url=http://www.cs.uwaterloo.ca/research/tr/1999/09/CS-99-09.pdf | year=1999 | first1=Andrej | last1=Brodnik | first2=Svante | last2=Carlsson | first5=ED | last5=Demaine | first4=JI | last4=Munro | first3=Robert | last3=Sedgewick | author3-link=Robert Sedgewick (computer scientist) | publisher=Department of Computer Science, University of Waterloo}}</ref> |
|style="background:#ffdddd"|Θ(''n'') | |style="background:#ffdddd"|Θ(''n'') | ||
|style="background:#ffdddd"|Θ(''n'') | |style="background:#ffdddd"|Θ(''n'') | ||
|style="background:#ffffdd"|Θ({{radic|''n''}}) | |style="background:#ffffdd"|Θ({{radic|''n''}}) | ||
|} | |} | ||
| − | <noinclude>{{Template reference list}}</noinclude> | + | <noinclude>{{Template reference list}}[[Category:Templates that generate named references]]</noinclude> |
Latest revision as of 21:43, 28 September 2020
| Linked list | Array | Dynamic array | Balanced tree | Random access list | Hashed array tree | |
|---|---|---|---|---|---|---|
| Indexing | Θ(n) | Θ(1) | Θ(1) | Θ(log n) | Θ(log n)[1] | Θ(1) |
| Insert/delete at beginning | Θ(1) | N/A | Θ(n) | Θ(log n) | Θ(1) | Θ(n) |
| Insert/delete at end | Θ(1) when last element is known; Θ(n) when last element is unknown |
N/A | Θ(1) amortized | Θ(log n) | N/A [1] | Θ(1) amortized |
| Insert/delete in middle | search time + Θ(1)[2][3] | N/A | Θ(n) | Θ(log n) | N/A [1] | Θ(n) |
| Wasted space (average) | Θ(n) | 0 | Θ(n)[4] | Θ(n) | Θ(n) | Θ(Template:Radic) |
References
- ↑ 1.0 1.1 1.2 Chris Okasaki (1995). "Purely Functional Random-Access Lists". Proceedings of the Seventh International Conference on Functional Programming Languages and Computer Architecture: 86–95. doi:10.1145/224164.224187.
- ↑ Day 1 Keynote - Bjarne Stroustrup: C++11 Style at GoingNative 2012 on channel9.msdn.com from minute 45 or foil 44
- ↑ Number crunching: Why you should never, ever, EVER use linked-list in your code again at kjellkod.wordpress.com
- ↑ 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