整数の配列が与えられた場合、配列各要素は、ある確率、固定数だけ増加できます。バブルソートを使用して配列をソートするために行われるスワップの予想数を見つける必要があります。NのB P [ I ] 0 ≤ I < N
私は次を試しました:
要素の確率するための与えられた確率から容易に計算することができます。i < j
上記を使用して、スワップの予想数を次のように計算しました。
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 ]
初期配列要素は、並べ替えまたは並べ替えなしの任意の順序にすることができます。その後、各数値はある程度の確率で変化します。この後、スワップの予想数を計算する必要があります。
以前に同様の質問を投稿しましたが、すべての制約がありませんでした。
私は正しい軌道に乗っているかどうかについて良いヒントを得られなかったので、ここにすべての制約をリストしました。問題を間違った方法で考えている場合は、いくつかのヒントを教えてください。