算法导论学习记录 2.1插入排序

1.插入排序

有数组A[n] = {5,2,4,6,1,3}
给出下标 j = 2 to n,表示正被插入到手中的’当前牌’。
每次抽一次牌就进行一次由已排序数列的最大数向最小数的查找,查找过程用 i 作为当前被用于比较的牌的下标,对数列中的数依次查找。
如果A[i] > A[j],则A[i+1] = A[i],A[i] = A[j],即将当前两个下标所指向的数交换位置,再将下标i向左退一位,实现数字在数组上的右移。
直到循环结束,完成这一张牌的插入。
已排序队列 A[1…j-1] 具有循环不变式的性质。

2.循环不变式

三条需要证明的性质
初始化:循环的第一次迭代之前,不变式为真
保持:每次迭代保持循环不变式的正确性
终止:循环终止时,不变式提供一个可证明算法正确的性质

证明
初始化:
循环前,A[1…j-1]只有一个元素A[1],显然是已排序状态,所以为真。
保持:
每一次for循环过程中,A[1…j-1]都已被排序,而当A[j]上的数被插入到正确的位置后,A[1…j]也被排序,所以为真。
终止:
首先,终止是必然出现且成立的,因为循环终止条件是j > A.length = n,且j每次自增1,必然会出现j = n+1的情况。
再者,子数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值