zoukankan      html  css  js  c++  java
  • 八大排序算法总结 1直接插入排序

    1.直接插入排序

    原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,

    最终将所有无序区元素都移动到有序区完成排序。

    要点:设立哨兵,作为临时存储和判断数组边界之用。

    实现:

    用C#源代码进行了实现

    Void InsertSort(Node L[],int length)

    {

    Int i,j;//分别为有序区和无序区指针

    for(i=1;i<length;i++)//逐步扩大有序区

    {

    j=i+1;

    if(L[j]<L[i])

    {

    L[0]=L[j];//存储待排序元素

    While(L[0]<L[i])//查找在有序区中的插入位置,同时移动元素

    {

    L[i+1]=L[i];//移动

    i--;//查找

    }

    L[i+1]=L[0];//将元素插入

    }

    i=j-1;//还原有序区指针

    }

    }

       

       这个算法的复杂度是 O(n^2) 他的算法的复杂度与BubbleSort 的算法的复杂度一致,但是其理解就是在数组中进行了插入要进行排序的数据

  • 相关阅读:
    bzoj 2599
    bzoj 3697
    poj 1741
    bzoj 2741
    bzoj 5495
    bzoj 3261
    网络流24题——骑士共存问题 luogu 3355
    网络流24题——数字梯形问题 luogu 4013
    bzoj 3998
    网络流24题——魔术球问题 luogu 2765
  • 原文地址:https://www.cnblogs.com/manuosex/p/2694613.html
Copyright © 2011-2022 走看看