It is also worth noting that some manuals say that appending to an array list is O(1) amortized. Which is true, if you make an amortized analysis (which essentially distributes the workload of copying the array into a larger block over all the inserts). That's to keep in mind for systems that have to be realtime or at least produce stable framerates. The worst-case is important and amortized analysis generously glosses over it.
EDIT: Not inserting, appending
At an insertion you'd have
(n + (n-1) + .. + 1)/n
= O(n^2) / n
The first part comes from each possible run times, each with probability 1/n. You might have to expand the list but that'd also be O(n) amortized.