Доброго времени суток!
Я новичок в оценке алгоритмов и хотел бы разобраться что к чему. Пусть есть код, написанный на Java:
Код:
for (int i = 1; i < k; i++) {
   for (int j = (n-k)/(k-1); j >= 0; j=j-2) {
      List<Task> tasks = new ArrayList<Task>();
      initTheList(tasks, j); // fills the list with j tasks
      someFunction(tasks);
   }
}
private void someFunction(List<Task> tasks) {
   ...
   Collections.sort(tasks, new ConstantTimeComparator());
   ...
}
Как видите, тут 2 цикла: внутренний и внешний. Во внутреннем цикле создается список объектов Task и заполняется этими объектами случайно. Важно, что длина этого списка равна 

. Кроме того, во внутреннем цикле присутствует функция someFunction(), самой трудоемкой (и важной) частью которой является сортировка (по умолчанию в Java применяется сортировка слиянием), вычислительная сложность которой 

, где 

 - размер входного массива.   
1) Верно ли, что если 

, где 

 - некоторая константа, то общая вычислительная сложность алгоритма равна 

? 
Я рассуждал так: раз 

 выражается через 

, то выражение 

 равно 

, аналогично, внутренний цикл даст 

, и, наконец, внешний цикл даст 

2) Верно ли, что если 

 - константа, то общая сложность алгоритма - 

, где 

Рассуждение такое: внешний цикл даст 

, внутренний цикл - 

, а функция someFunction() даст 

, где 

.
Не могли бы вы проверить рассуждения, и, если неправильно, объяснить где ошибка, и как правильно нужно было вести рассуждение? Заранее спасибо.