算法精解十九(C语言版)
来源:互联网 发布:y系列单相电机数据大全 编辑:程序博客网 时间:2024/05/21 06:51
实例分析:插入排序
本节描述插入排序法在最坏情况下对运行时间的分析。插入排序是一种简单的排序算法。它在一个有序的数据集中查找位置新元素的位置,并将新元素插入进去。在第12章完整描述了插入排序算法。插入排序的代码如示例4-1所示。
首先要知道,哪行代码会受要排序的数据量影响,我们看代码中有一个嵌套循环,外层的迭代数从i到size-1,内层的迭代数从j-1到所要插入的新元素的正确位置。其他代码的运行都会消耗一段固定的四溅,与要排序的元素的个数无关。通常情况下,变量n定义为与算法性能有关的参数。考虑到这一点,外层循环的运行时间T(n)=n-1,会固定消耗一段时间,检查一下内部矛盾循环,考虑到最坏情况,假如在插入每个元素之前不得不从头到尾遍历整个有序数据集。这是因为,内层循环要为第一个元素执行一遍,为第2个元素执行第二遍,依此类推,直到外部循环结束。实际上,这就是一个球1到n-1累加和的过程,求和的结果为: T(n)=(n+(n=1))-n,从结果上看得出消耗了一定量的时间。(这个等式来源于著名的从1到n的求和公式)结果如下:
0 0
- 算法精解十九(C语言版)
- 算法精解二十九(C语言版)
- 算法精解十一(C语言版)
- 算法精解十二(C语言版)
- 算法精解十三(C语言版)
- 算法精解十四(C语言版)
- 算法精解十五(C语言版)
- 算法精解十六(C语言版)
- 算法精解十七(C语言版)
- 算法精解十八(C语言版)
- 算法精解三十(C语言版)
- 精解算法二十一(C语言版)
- 算法精解一(C语言版)
- 算法精解二(C语言版)
- 算法精解三(C语言版)
- 算法精解四(C语言版)
- 算法精解五(C语言版)
- 算法精解六(C语言版)
- ckeditor 与 ckfinder基于Struts2 集成实现在线编辑以及文件上传(JAVA版)
- STL顺序容器操作6
- 在Linux上安装ipmitool
- WFP
- xshell的快捷键(非常实用)
- 算法精解十九(C语言版)
- 为知笔记:优秀国产知识管理软件的使用心得
- Nginx编译参数详解
- CSS3 选择器总结(表格版)
- 教你按摩牙龈护齿十大秘诀
- ExtJs.Store.load()各参数含义解析
- android ListView详解
- intellij 插件
- 防火墙配置