冒泡算法的准确性

 

BUBBLESORT(A)

1    for i=1 to length(A)

2        do for j=length(A) downto i+1

3                 do if A[j] < A[j-1]

4                          then exchange A[j]<->A[j-1]

 

(1)对2-4行给出精确的循环不变式。

    a:初始化

        循环开始前,j=length(A),考虑的数组范围中只有一个元素,它是有序的。

    b:保持

        在循环中,j=m成立,则j=m+1也成立。当j=m时,最小的元素一定是A[j],因为在已考虑的范围length(A) to m中,最小的元素已被移动至m,因此A[m]最小。在第3行,如果A[j]比A[j-1]小,则会进行二者交换,否则认为最小元素为A[j-1]。

    c:终止

        当j=i+1,则循环结束,最小的元素一定在A[i]。

 

(2)对1-4行给出精确的循环不变式。

    a:初始化

       循环开始前,i=1,数组A元素最小在i,算法成立。

    b:保持

       当i=j时,位于i to length(A)之间的最小元素会被调整至i,数组元素有序性仍然保持。

    c:终止

       当循环终止,所有元素被移动至正确位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值