算法导论入门(2)

插入排序伪代码
INSERTION-SORT(A)
for j = 2 to A.length
key = A[j]
i = j - 1
while i > 0 and A[i] > key
A[i+1] = A[i]
i = i - 1
A[i + 1] = key

伪代码的一些约定
1.缩进表示块结构
2.for循环迭代增加使用to,减少用downto
3.若无显式说明,不使用全局变量
4.数组不指向任何对象,赋值NIL

循环不变式
在INSERTION-SORT 的for循环中,循环变量为j。j代表当前正要被插入到序列中的元素的下标。而子数组A[1~j-1]是已经被排好序的子序列。这一性质,在j被赋予初值2,首次进入循环之前成立,而且每次循环之后(j加了1)、进入下一次循环之前也成立。

在第一次进入循环之前成立、每次循环之后还成立的关系称为“循环不变式”

可以利用循环不变关系证明循环的正确性。
分三步走:
1)初始化:证明初始状态时循环不变式成立,即证明循环不变式在循环开始之前为真;
2)保持:即证明每次循环之后、下一次循环开始之前循环不变式仍为真;
3)终止:即证明循环可以在有限次循环之后终止。

其中第1)和2)步类似于数学归纳法的证明策略

分治法
思想:将原问题分解为几个规模较小、但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值