O(1) insertion is the amortized worst-case time complexity, actually. (Amortized in the sense that the O(n) cost of copying is paid only during the n-th insertion). Average complexity is a slightly different thing.
It is not “worst-case” (as the post demonstrates, you can get worse results by using specifically crafted data that exploits hash collisions). There are algorithms that can get you O(logN) instead of O(N) even on such data.
Yeah but there's a formal term for average time complexity, Theta
Θ does not usually mean average, but simultaneously upper and lower asymptotic bounds.
you might want to read that chapter of CLRS again
You're right.
It isn't the average bound, it is the upper and lower bound stated together ( as long as thats the same function )