Согласно статье в Википедии о динамических массивах , вставка / удаление в конце массива - это O (1), в то время как вставка / удаление из середины - это O (n). Почему именно это?
Также - если у меня есть динамический массив с 5 элементами, и я вставляю новый элемент в позицию 6, операция будет O (n), тогда как, если я использую функцию для добавления в конец массива, это O (1) , Разве это не та же самая операция, если предположить, что массиву не нужно изменять размер в любом случае? Или добавление в динамический массив действительно вставляет новый элемент где-нибудь, кроме позиции 6?
Спасибо!
РЕДАКТИРОВАТЬ: Я думаю, что моя основная путаница заключается в разнице между вставкой в конце массива и вставкой в определенной позиции, которая эквивалентна концу массива.
Полагаю, указатель на адрес памяти конца массива сохраняется, поэтому операция добавления выполняется быстро. И наоборот, если я укажу точную позицию (даже если это конец массива), он не будет знать, что вставка в этой позиции равносильна использованию вышеупомянутого адреса памяти, поэтому он должен пересечь весь массив, а?