Мне кажется, что ваш алгоритм просто вставляет каждый из несортированных элементов в отсортированный список по одному. Если у вас m
не отсортировано и n
отсортировано, это в основном даст вам количество операций, пропорциональное m * n
.
Если бы вы создали массив несортированных элементов, а затем отсортировали их (m log m
операции), вы могли бы затем использовать слияние (m + n
операции) для создания нового списка.
Честно говоря, различия не обязательно станут очевидными, пока m
и / или n
не начнут становиться большими, но об этом нужно помнить.
Кроме того, я думаю, что вы также можете столкнуться с проблемами, когда несортированный элемент находится в конце отсортированного списка. У вас есть специальная обработка для начала, но если вы вставляете 7
в список {1,2,3}
, вы в конечном итоге попытаетесь разыменовать NULL, потому что current
вышел за пределы конца отсортированного списка (current->data <= src->data
будет быть истинным для всех ненулевых значений current
).