> Are you claiming that it is faster in practice to insert an element at the beginning of an array with 1G items, than it is to insert it at the beginning of a linked list with 1G items?
You missed that insertion point is selected at random and must be found as part of the operation. But in practice if you know data will be inserted preferentially at the wrong end -- you can just easily reverse the data structure to make insertions prefer the better end.
> I am certain the first item will not be true
I am used to it. Everybody gets it wrong until they spend some time thinking about it, get it explained and/or run a real life test.
Hint: think about the cost of iterating over half of the linked list versus performing binary search over the array AND moving half of it.
The cost of binary search goes to negligible pretty fast and cost of moving 8 bytes of memory is always going to be lower than the cost of iterating over one entry (16 bytes) of linked list. And you have statistically equal number of both assuming you are selecting values at random with equal chance for each 64 integer to be next choice.
CPU can be moving a lot of bytes at the same time but it has to dereference the pointer before it can get to perform comparison before it can dereference the next pointer...
Actual algorithmic complexity of both algorithms is exactly the same. But an array is much more efficient (instructions per item).