循环不变式

在数学上阐述了通过循环(迭代,递归)去计算一个累计的目标值的正确性。

关于循环不变式,我们必须要证明三条性质:

  1. 初始化:循环第一次迭代之前,它为真。
  2. 保持:如果循环的某次迭代之前它为真,那么下次迭代之前仍为真。
  3. 终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。

插入排序使用了增量方法:在排序子数组A[1,...,j-1]后,将单个元素A[ j ]插入子数组的适当位置,产生排序好的子数组A[1,..,j]。

//插入排序
#include "stdio.h"
#define MAXSIZE 1000
int a[MAXSIZE];
int main ()
{int j,i,n,key;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(j=1;j<n;j++){key=a[j];i=j-1;while(i>0 && a[i]>key){a[i+1]=a[i];i=i-1;}a[i+1]=key;}for(int i=0;i<n;i++){printf("%d ",a[i]);}printf("\n");return 0;
} 

用分治法设计一个排序算法,该算法的最坏情况运行时间比插入排序要少得多。

【算法导论】插入排序相关推荐

  1. 插入排序-算法导论课堂笔记1

    插入排序--算法导论1 分析算法的一些思路 伪代码pseudocode 思路 图解 实现 tips 分析算法的一些思路 假定没有并发操作 一般不关心精度 不考虑内存层面结构 输入规模:输入的项数 运行 ...

  2. 算法导论中C语言代码,算法导论-学习笔记与进度

    算法导论 阅读进度 第一部分 基础知识 第一章 计算中算法的角色 Done 1.1 算法 输入与输出 算法可以解决哪些问题 数据结构 技术 一些比较难的问题 1.2 作为一种技术的算法 效率 算法和其 ...

  3. 《算法导论》学习总结 — 2.第一章 第二章 第三章

    上一篇:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 前三章基本没什么内容,所以合在一起总结. 第一章: 讲了算法( ...

  4. 利用链表实现可合并堆(算法导论第三版思考题10-2)

    利用链表实现可合并堆(算法导论第三版思考题10-2) a 链表已排序 创建一个空堆: Θ(1) 插入:Θ(n),插入后依然保持排序 最小值:Θ(1),第一位便是 取最小值:Θ(1) 合并:Θ(n),可 ...

  5. C#经典算法实践,回顾往生,更是致敬《算法导论》

    该文章的最新版本已迁移至个人博客[比特飞],单击链接 C#经典算法实践,回顾往生,更是致敬<算法导论> | .Net中文网 访问. 概述 本系列博文将会向大家介绍本人在钻研<算法导论 ...

  6. 算法导论读书笔记(7)

    算法导论读书笔记(7) 目录 快速排序 快速排序的简单Java实现 快速排序的性能 最坏情况划分 最佳情况划分 快速排序的随机化版本 比较排序 快速排序 快速排序是一种原地排序算法,对包含 n 个数的 ...

  7. 算法导论 练习14.1-7

    14.1-7 说明如何在O(nlgn)O(nlgn)O(nlgn)时间内,利用顺序统计树对大小为nnn的数组中的逆序对(见思考题2-4)进行计树. 这道题和算法导思考题2-4一致,当时采用了归并排序和 ...

  8. 麻省理工学院《算法导论》(MIT - Introduction to Algorithms)

    关于课本的介绍如下: 本书自第一版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考手册.本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层 ...

  9. 算法导论第一,第二部分总结

    最近正在看一部大著<算法导论>,这本书无论从严密还是从思维上面都达到了一个难以企及的高度.里面的算法分析与设计基本上都在理论性上,如果想实用的话自己还需要看点其它的东西.接下来,就自己学了 ...

  10. 【算法导论】 内部排序算法总结

    排序名称 时间复杂度 空间复杂度 稳定性 直接插入排序 O(n^2) O(1) 稳定 折半插入排序 O(n^2) O(1) 稳定 希尔排序 O(n^2) O(1) 不稳定 冒泡排序 O(n^2) O( ...

最新文章

  1. JSP页面空指针异常调错办法之weblogic
  2. MongoDB数据库(8.Python中使用mongodb数据库以及pymongo模块用法)
  3. 修改Cmder命令提示符
  4. Intel和AMD的最新视频编码/解码基准测试
  5. Windows系统常用技巧总结
  6. uva11922(强行用rope替代spaly)
  7. 设备健康管理平台如何为企业打造五大核心设备管理体系?
  8. java 操作rtsp/rtmp视频流生成
  9. 【运维面试】面试官: 你们公司的上线流程是怎么样的?
  10. android简单悬浮窗源码,Android 悬浮窗的实现源码
  11. VS2008鼠标右键不灵敏,TFS的Local Path无法打开对应文件夹
  12. eclipes创建web项目
  13. 二分思想(二分查找,整数二分,浮点数二分)
  14. IoT企业物联网平台,从设备端到云端业务系统全链路开发实战——实践类
  15. VMware云管平台运维管理
  16. C++ STL?看这篇就够啦。草履虫都能学会的STL教程!
  17. 以太坊智能合约的生命周期
  18. dmidecode查看硬件信息
  19. VIM实用指南(16)vim粘贴格式错乱
  20. 像CTO一样思考:如何高效管理30人的研发团队?

热门文章

  1. 学习软件测试发展前景怎么样?有前途吗?
  2. Dynamics CRM 导入用户数据错误 could not retrieve salesperson role
  3. 检查是否支持 SO_REUSEPORT
  4. 【数据库优化专题】MySQL视图优化(一)
  5. OpenStack快速入门
  6. Linux 安装图形界面及远程连接
  7. Android问题汇总
  8. Android中Service深入学习
  9. win2003登陸及關機設定
  10. 在WinXP上通过Virtual PC安装WinCE