算法精解十九(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