直接插入排序(Insert Sort)

直接插入排序

思路分析:在一个有序的数组中为要插入的元素找到指定的插入位置,但这个位置并不一定是最后排序结果中对应元素的最终位置。

时间复杂度:最坏情况(整个序列逆序时)时间复杂度为O(n^2),最优情况(整个序列初始顺序,从大到小时)时间复杂度为O(n)。

源代码:

void InsertSort(int R[],int n)
{
    int i,j,temp;
    for(i=1;i<n;i++)    //插入排序共需要插入n个元素,但此处我们默认序列中存在R[0]这个元素,故之后需进行n-1次插入操作
    {
        temp=R[i];
        j=i-1;
        while(j>=0&&temp<R[j])    //比插入元素大的元素进行后移操作
        {
            R[j+1]=R[j];
            --j;
        }
        R[j+1]=temp;    //插入要插入的元素
    }
}

猜你喜欢

转载自www.cnblogs.com/sunnylux/p/11039332.html