Какая сложность будет у решения задачи с конкатенацией массивов и сортировки массива

«Какая сложность будет у решения задачи с конкатенацией массивов и сортировки массива» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конкатенация двух массивов длиной n и m будет O(n + m), так как нужно скопировать все элементы.

Сортировка массива длиной k (где k = n + m) в среднем случае:

  • Для Arrays.sort() (Timsort) - O(k log k)
  • Для быстрой сортировки - O(k log k) в среднем, O(k^2) в худшем

Общая сложность: O(k log k), где k - суммарная длина массивов.

val arr1 = arrayOf(3, 1)
val arr2 = arrayOf(4, 2)
val merged = arr1 + arr2  // O(n + m)
merged.sort()            // O(k log k)