【发布时间】:2012-07-05 02:08:29
【问题描述】:
我有一个冒泡排序版本:
int i, j;
for i from n downto 1
{
for j from 1 to i-1
{
if (A[j] > A[j+1])
swap(A[j], A[j+1])
}
}
我想使用上述版本的冒泡排序来计算预期的交换次数。我使用的方法如下图:
// 0 based index
float ans = 0.0;
for ( int i = 0; i < n-1; i++ )
{
for ( int j = i+1; j < n; j++ ) {
ans += getprob( a[i], a[j]); // computes probability that a[i]>a[j].
}
}
我是走对了路还是错过了什么?
【问题讨论】:
-
为什么不在随机数据集上运行它并找出答案?
-
“事物的数量”很少是
float。而且我根本不懂getprob(),它得到了数字,所以它可以……准确回答,概率是多少? -
这在纸上可能比在程序中更容易解决。
-
@unwind 这个数字是浮点数,因为我必须计算预期的交换次数,并且我必须为元素 a[i] > a[j] ( i
-
见this 回答。
标签: c++ algorithm math bubble-sort