Я пытаюсь выяснить, в чем сложность этого кода:
///Note: a[i] is an array with n elements
for (int i = 0; i < n; i++) {
if (Math.random() > 0.25)
if (i%4 == 0)
BubbleSort (a[i]);
else
QuickSort (a[i]);
else
for (int j = i; j < n; j++)
for (int k = i; k < n; k++)
BinarySearch (a[i]);
}
, насколько я понимаю, BubbleSort
- это n^2
, QuickSort
, лучший случай - nlogn
, но наихудший случай - n^2
, а BinarySearch
- logn
, но для сортировки списка требуется.
Проходя по коду 25% , он будет выполнять двоичный поиск, а в остальное время он будет QuickSort
или BubbleSort
в разделе.
У него будет 1/4 шанса на BubbleSort
и 3/4 шанса на QuickSort
.
Чтобы найти сложность, я должен был бы составить отдельные уравнения для лучшего и наихудшего случая?