直接插入排序法(C语言实现)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/peng_apple/article/details/79612279
插入法排序:
通过数据移动,留出合适位置插入顺序合适的值,而无须数据交换
步骤:

从第二个元素“i”开始缓存准备用于比较,并留出一个空位将空位前的元素“j”拿来与缓存值比较不满足则移动,直到向前找到头比较的目的是要让缓存值插入后成为从开头到插入点这个区间中的最值如果缓存值向前看不是最值,则往后移动,直到可以让缓存值插入后成为最值时停止将缓存值插入到最值位置(即内循环下一个将要移动的位置)。



demo:

//从小到大进行排序
insertsort(int *k,int n)             /*直接插入排序*/
{
    int i,j;
    int temp;
    for(i=1;i<n;i++)
    {
        temp = k[i];                //将要比较的值先绶存起来留出一个空位,方便移动
        j = i - 1;
        while(j>=0 && k[j]>temp)    //比较直到出现比temp大的值,或向前找到头
        {
            k[j+1] = k[j];            //将前面的值往后移
            j--;
        }
        k[j+1] = temp;                 //插在a[j]的后面
    }
}

猜你喜欢

转载自blog.csdn.net/peng_apple/article/details/79612279