插入排序

来源:互联网 发布:百度软件应用中心 编辑:程序博客网 时间:2024/05/17 02:11

类似扑克牌排序


C语言代码:

void InsertSort(int array[],unsigned int n){int i,j;int temp;for(i=1;i<n;i++){temp = array[i];//store the original sorted array in tempfor(j=i ; j>0 && temp < array[j-1] ; j--)//compare the new array with temp{array[j]=array[j-1];//all larger elements are moved one pot to the right} array[j]=temp;}}

算法导论伪代码换成C语言:

void InsertSort(int array[],unsigned int n){int i,j,temp;for(j=1;j<n;j++){temp = array[j];i=j-1;while(i>=0 && array[i]>temp){array[i+1]=array[i];i--;}array[i+1]=temp;}}


循环不变式验证算法正确。对于循环不变式,必须证明它的三个性质:

1.初始化

循环开始第一次是正确的。

2.保持

在循环的某一次迭代开始之前它是正确的,在下一次迭代开始之前它也是正确的。

3.终止

循环结束后,不变式给了我们一个有用的性质,那就是所得的最终序列是有序的,按升序或者降序排列。


循环不变式类似数学归纳法。


原创粉丝点击