直接插入排序

直接插入排序的时间复杂度为O(n*n)空间复杂度为O(1)是稳定的排序算法

直接插入排序是把序列分成有序队列和无序队列,再把无序队列中的数一个个插入到有序队列中恰当的位置

void InsertSort(int* data, int length)
{
    if( data == NULL  || length <=0 )
        return;

    for(int i = 1; i < length; ++i)
    {
        if( data[i] < data[i-1]) //有序序列为(0~i-1),无序序列为(i~length-1)
        {
            int temp = data[i]; //哨兵
            int j= i-1;
            for(; j>=0 &&  data[j] > temp; --j)  //从有序序列的最后一个数开始比较,即寻找恰当的插入位置
            {
                data[j+1] = data[j];
            }
            data[j+1] = temp;
        }
    }
}

 

posted @ 2013-03-09 20:25  没离开过  阅读(149)  评论(0编辑  收藏  举报