给定一个由整数组成的数组,可以以一定的概率,将数组中的每个元素增加固定数量。我必须找到使用气泡排序对数组进行排序所需的交换次数。
我尝试了以下方法:
一个元素的概率用于可以很容易地从给定的概率来计算。
使用上述方法,我计算出了预期的交换次数为:
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 ]
请注意,初始数组元素可以按任何顺序排列,排序或不排序。然后,每个数字都可能以某种概率发生变化。在此之后,我必须计算预期的交换次数。
我之前曾发布过类似的问题,但它没有所有限制。
关于我是否在正确的轨道上,我没有得到任何好的提示,因此在这里列出了所有限制。如果我以错误的方式考虑问题,请给我一些提示。