概述
插入排序的思想是构造一个循环不变式,可用扑克牌的例子来解释,左手为已经排好序的牌,右手为未排好序的牌,分别将右手中的牌依次一张一张地插入到左手,将左手中的每一张牌依次和这张牌比较,以此来确定这张牌在左手中的正确顺序,然后进行下一张牌,在这个过程中,左手中的牌始终是排好序的,即不变的,——称为循环不变式
初始:左手中只有一张牌,是排好序的
保持:依次将左手中的牌插入适当位置,保持左手排好序
终止:当右手中的牌全部到左手中
初始时:只有1,已经排好序
保持:while(i>=1&&A[i]>key)
{
A[i+1]=A[i]//右移
i--;
}
A[i+1]=key;//插入
已经跑过的代码如下
#define N 10 int main() { int i=0; int a[N]; for(i=0;i<N;i++) scanf("%d",&a[i]); int j,key; i=0; for(j=1;j<N;j++) { key=a[j]; i=j-1; while(i>=0&&a[i]<key) { a[i+1]=a[i]; i--; } a[i+1]=key; } for(i=0;i<N;i++) { printf("%dt",a[i]); } return 0; }
转载于:https://www.cnblogs.com/YTYMblog/p/5342421.html
最后
以上就是大力短靴为你收集整理的排序——插入排序(循环不变式)的全部内容,希望文章能够帮你解决排序——插入排序(循环不变式)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复