循环不变量

插入排序

循环不变量

在插入排序中,对于A={5,27,45,1,35,30,10}
A[j]表示当前准备排序的元素。在for循环每次开始迭代时,
元素A[0...j-1]就是排序好了的部分,
而剩下的部分A[j+1...n-1]是未排序的元素。
但事实上元素A[0..j-1]就是原来在位置0到j-1的元素(虽然顺序可能变化),但现在已按序排列,
将A[0…j-1]的这些性质形式的表示为一个循环不变式

性质:

初始化:循环的第一次迭代之前,它为真

循环的第一次迭代之前,循环不变式中只有A[0],必然是按顺序排列的,为真

保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。

例如:在A[j]进行排序之前,A[j-1],A[j-2]…A[0],必然是为真的,对于A[j]排序后,下一次迭代之前,A[j]…A[0] 已经排序好了,也为真

终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。

当循环终止,即证明数组已经排序成功,则可以说明这个插入排序已经成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值