1. for i=1 to n-1 do
2. for j=1 to n-i do
3. if a[j]>A[j+1] then
4. Change A[j] with A[j+1]
告诉第3行(if
语句)中的指令将完成多少次。
我认为这是第一个没有修改的主要气泡排序算法。
首先,我将考虑三种情况:最佳,平均和最差。
在最佳方式中,if语句将完成n-1次。数组中的数据已经被隔离。完成数组和结束算法就足够了。
在最差的情况下,if语句将完成:
<a href="http://www.codecogs.com/eqnedit.php?latex=\sum_{i=1}^{n-1}\tfrac{n(n-1)}{2}" target="_blank"><img src="http://latex.codecogs.com/gif.latex?\sum_{i=1}^{n-1}\tfrac{n(n-1)}{2}" title="\sum_{i=1}^{n-1}\tfrac{n(n-1)}{2}" /></a>
&#13;
<a href="http://www.codecogs.com/eqnedit.php?latex=\sum_{i=1}^{n-1}\tfrac{n(n-1)}{4}" target="_blank"><img src="http://latex.codecogs.com/gif.latex?\sum_{i=1}^{n-1}\tfrac{n(n-1)}{4}" title="\sum_{i=1}^{n-1}\tfrac{n(n-1)}{4}" /></a>
&#13;
问候,
答案 0 :(得分:1)
在代码中没有检查 - 如果数组已经排序 - 所以if语句的数量总是
Q = 1 + 2 + 3 + ... + n-1 = n * (n-1) / 2
不是Wiki code检查
....
until not swapped
并且可以在最佳情况下执行(n-1)
if-statements(排序数组)
答案 1 :(得分:0)
if语句将始终执行完全相同的次数,大致为n ^ 2/2。
声明4的执行频率,这是一个有趣的问题。特别是对于平均数,数学会很有趣。