算法之插入排序——直接插入排序

来源:互联网 发布:微信js获取地理位置 编辑:程序博客网 时间:2024/05/18 02:29

    我们今天来说一下插入排序的直接插入排序。

    直接插入排序是一种最简单的插入排序。它的基本思想是一次将每个记录插入到一个已排好序的有序表中去,得到一个新的有序表。

    直接插入排序的过程:


他的算法如下:

void InsertSort(SqList &L){  //对顺序表L进行直接插入排序  for (i=2;i<=L.length;i++){  //从第2个元素起进行插入      L[0]=L[i]; //第i个元素复制为岗哨      j=i-1; //j为岗哨前元素个数,即岗哨与之比较的个数      while (L[0].key<L[j].key) //第j个元素与岗哨进行比较,至值不大于岗哨时        {  //前i-1个数都是从小到大的有序序列,所以只要当前比较的数比岗哨大,就把这个数后移一位           L[j+1]=L[j];           j--;         }      L[j+1]=L[0]; //将第i个记录插入到序列中    }     if()  }
直接插入排序是一种稳定的算法,他的空间复杂度为O(1),平均和最坏情况的时间复杂度为O(N2),最好情况是O(N)。

0 0
原创粉丝点击