直接插入排序

来源:互联网 发布:mac无法解压zip 编辑:程序博客网 时间:2024/06/05 05:45

排序方法之直接插入排序

作者:小峰

最简单一个直接插入程序,下面首先我为大家讲解一下这个排序算法的主要思想。在排序的使用利用的是顺序存储结构——数组。将序列中的第1个记录看成是一个有序的子序列;从第2个记录起逐个进行插入,直至整个序列变成按关键字有序序列为止;整个排序过程需要进行比较、后移记录、插入适当位置。从第二个记录到第n个记录共需n-1趟。

图解

1.首先定义一个数组,如果数据个数为10,则需要建立一个长度为11的数组,因为第一个空间要用做监视哨的作用。

.从第三个元素(在代码中设为i)开始,与其前面一个元素(i-1)进行比较,如果后面的元素小于前面的(a[i]

#include <stdio.h>    int main()    {        int i,j;        int a[10] = {10,9,8,7,6,5,4,3,2,1};        for(i=2;i<=10;++i)            if(a[i]<a[i-1]){                a[0]=a[i];        a[i]=a[i-1];         for(j=i-2;a[0]<a[j];--j)            a[j+1] = a[j];        a[j+1]=a[0];        }        int k;        for( k=1;k<=10;k++)        {            printf("%d  ",a[k]);        }         return 0;    }

(1)稳定性
直接插入排序是稳定的排序方法。
(2)算法效率
a.时间复杂度
最好情况:比较O(n),移动O(1);
最坏情况:比较O(n2),移动O(n2);
平均O(n2)
b.空间复杂度
O(1)。

1 0
原创粉丝点击