Я должен рассмотреть memmove () O (n) или O (1)?

это может быть глупым вопросом, но я хочу вычислить сложность одного из моих алгоритмов, и я не уверен, какая сложность рассмотреть для memmove () функционируют.

Можно ли помочь / объясняют?

void * memmove ( void * destination, const void * source, size_t num );

Так сложность O (цифра) или O (1). Я предполагаю, что это - O (цифра), но я не уверен, поскольку я испытываю недостаток на данный момент в понимании того, что продолжается под капотом.

8
задан Andrei Ciobanu 25 April 2010 в 21:16
поделиться

2 ответа

Поскольку время работы memmove увеличивается прямо пропорционально количеству байтов, которое требуется переместить, оно равно O (n ).

11
ответ дан 5 December 2019 в 12:56
поделиться

Что вы применяете операцию memmove () к - выбранным элементам в алгоритме или всем им? Вы применяете memmove () к элементам более одного раза?

Это то, что будет иметь значение для сложности алгоритма.

Этот ответ может отличаться от сложности самого memmove () в отношении массивов элементов char , с которыми работает memmove () (для которых memmove () - операция O (n)).

2
ответ дан 5 December 2019 в 12:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: