zoukankan      html  css  js  c++  java
  • C语言排序算法——插入排序算法

    直接插入排序的基本操作是将一个记录插入到已经排好的有序表中。

    先选定一个位置i,插入排序将i左侧比位置i数值大的数值全部右移,然后将原来i对应的值插入回去。

     1 void InsertSort(int *p)
     2 {
     3     int i,j;
     4     int tmp=0;
     5     for(i=1;i<10;i++)
     6     {
     7         if(p[i-1]>p[i])
     8         {
     9             tmp = p[i];    //将p[i]左边比p[i]大的全部左移,要先将其赋给一个缓存变量
    10             for(j=i-1;p[j]>tmp;j--)
    11             {
    12                 p[j+1]=p[j];
    13             }
    14             p[j+1]=tmp;
    15         }
    16     }
    17 }

    过程,先将p[i]的值赋给tmp,然后i左侧的数值与tmp比较,比tmp大则右移一位,不比tmp大,则将tmp插入回去。

    最好情况下,即要排序的序列本身是有序的,第7行的比较一共执行了n-1次,没有移动记录,时间复杂度为O(n)。

    最坏情况下,需要比较2+3+...+n=(n+2)(n-1)/2次,移动次数为(n+4)(n-1)/2

    时间复杂度为O(n2)

  • 相关阅读:
    基本排序算法分析
    Linux内核浅谈
    Linux内核浅谈
    Linux内核浅谈
    淘宝架构技术的演变
    淘宝架构技术的演变
    淘宝架构技术的演变
    中间件小结
    中间件小结
    中间件小结
  • 原文地址:https://www.cnblogs.com/DaLiNDluDlu/p/5258346.html
Copyright © 2011-2022 走看看