36 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
tags:
 | 
						|
  - data-structures
 | 
						|
---
 | 
						|
 | 
						|
# Arrays
 | 
						|
 | 
						|
> Arrays are used both on their own and to implement many other data structures
 | 
						|
> that place additional restrictions on how the data is manipulated.
 | 
						|
 | 
						|
## Algorithmic complexity
 | 
						|
 | 
						|
In terms of data retrieval arrays have a good runtime since retrieving an
 | 
						|
element or storing an element takes constant time. Also an entire array takes up
 | 
						|
O(n) space.
 | 
						|
 | 
						|
This only applies in the case of strict arrays that exist in strictly typed and
 | 
						|
more advanced languages such as Java and C++. In JavaScript an array is really
 | 
						|
closer to a list in other languages. That is to say, it's size (and of course
 | 
						|
the types it holds) does not need to be known in advance or specified at all. In
 | 
						|
stricter languages, you would cast the type for the array and specify its
 | 
						|
length, for example:
 | 
						|
 | 
						|
```cpp
 | 
						|
int anArray[10] = { 1, 2, 3, 4,  5, 6, 7, 8, 9, 10 }
 | 
						|
```
 | 
						|
 | 
						|
Whilst storage and retrieval take place in constant time, deleting and inserting
 | 
						|
elements through methods like `pop` and `shift` are more time consuming, since
 | 
						|
the index of every item has to be updated in response.
 | 
						|
 | 
						|
## Random access
 | 
						|
 | 
						|
As we can access any element of the array at any time through index notation,
 | 
						|
arrays offer random and non-sequential access. This is in contrast to stacks and
 | 
						|
queues (where only the top/bottom can be accessed) and linked lists.
 |