yangyang12138

导航

丰富自己的代码库-直接插入排序

直接插入排序,就是把一个无序集合每次抽出一个集合插入到有序集合中,如此循环一直到无序集合为空。

算法的关键在于插入,首先一个数据跟有序集合的最后一个比较若小于(或大于)则放在最后一个位置,若不满足则位置前移,如果是数组则数据位置要不断后移,以腾出位置来放新数据,直到找到一个满足前一个数据小于(或大于)待插入数据

的位置,或到达数据的第一个位置,则将数据放入这个位置。依次循环上述操作直至无序集合为空,对于数组这样排序复杂度是O(n),但是对于链表则是常数阶

template<class T>
void InsertSort(T* a,int size)
{
    for(int i=1;i<size;i++)
    {
        if(a[i]<a[i-1])
        {
            int j =0;
            for(j=i-1;j>=0&&a[j]>a[i];j--)
            {
                a[j+1]=a[j];
            }
            a[j]=a[i];
        }
    }
}

 

posted on 2016-12-02 14:46  杨杨09265  阅读(115)  评论(0编辑  收藏  举报