Враховуючи масив з цілих чисел, кожен елемент масиву може бути збільшений на фіксоване число з деякою ймовірністю , . Я повинен знайти очікувану кількість свопів, які відбудуться для сортування масиву за допомогою сортування бульбашок .
Я спробував таке:
Ймовірність для елемента для може бути легко обчислена з заданих ймовірностей.
Використовуючи вищесказане, я розрахував очікувану кількість свопів як:
double ans = 0.0; for ( int i = 0; i < N-1; i++ ){ for ( int j = i+1; j < N; j++ ) { ans += get_prob(A[i], A[j]); // Computes the probability of A[i]>A[j] for i < j.
В основному я прийшов до цієї ідеї, оскільки очікувана кількість свопів можна обчислити за кількістю інверсій масиву. Отже, використовуючи задану ймовірність, я обчислюю, чи буде число замінено числом .A [ j ]
Зауважте, що початкові елементи масиву можуть бути в будь-якому порядку, відсортовані або несортовані. Тоді кожне число може змінюватися з певною вірогідністю. Після цього я повинен підрахувати очікувану кількість свопів.
Я раніше розміщував подібне запитання, але він не мав усіх обмежень.
Я не отримав жодних добрих підказів щодо того, я навіть на правильному шляху чи ні, тому я перерахував тут усі обмеження. Будь ласка, дайте мені підказки, якщо я думаю про проблему неправильно.