title: Could someone explain the Big Oh complexities for arrays to me? I'm not quite understanding how they work
body: <p>I understand Linked List complexities for the most part. Accessing an item is O(n) in worst case because it may be at the end or not exist. Adding is O(1) to an unsorted Linked List because you can just add it as the head.</p>
  
  <p>But for arrays, I'm confused. I've read a lot about how accessing is efficient (O(1)) but addition isn't necessarily, neither is deletion. Why is this?</p>
  
  <p>Is it because addition isn't always at the end? There it would be O(1), right? But if it's at another point, you'd have to shift the items, which would be O(n)? And this is happening "behind the scenes" so to speak in a high-level language, right? It's moving memory locations and that's where the complexity kicks in?</p>
  
  <p>Deletion causes there to be a gap I gather? And it has to fill it in?</p>
  
  <p>Basically if I have an array with 10 items in it, and I go to add an item at the 5th index point, would it have to copy all the items from index 5 and higher to a one-higher index point, causing the operation to be O(n)?</p>
  
  <p>Any clarification would be greatly appreciated.</p>